Forum: Ruby on Rails Princely Plugin: get nil.size error

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Fde34ab22ac6ae44693f36b9f7fed41d?d=identicon&s=25 Brijesh Shah (brijesh)
on 2008-12-16 13:03
Hi All,

I want to generate pdf with css. I am using princely plugin.

This is code which I written

 def pdf
   prince = Prince.new()
   html_string = render_to_string(:template =>
'/users/paid_invoice.pdf.erb')
   send_data(
     prince.pdf_from_string(html_string),
     :filename => 'some_document.pdf',
     :type => 'application/pdf'
   )
end

But I am getting error of nil.size


You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.size

RAILS_ROOT: /var/www/sortapp
Application Trace | Framework Trace | Full Trace

/usr/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/streaming.rb:123:in
`send_data'
app/controllers/users_controller.rb:135:in `pdf'

I also used make_and_send_pdf  function but got the same error.
I thought I am getting error in render_to_string function.

Can anyone tell me how can I solve this issues?

Thanks in advance
Ffba8deaaf956220feebdc94f3d12fba?d=identicon&s=25 Aa Aa (troz101)
on 2009-08-09 07:59
Did you ever figure out this problem?

I have a working application and my code works on my laptop, but when I
try it on our production server I come up with this error, but for the
life of me I can't figure out why it is being thrown on one machine and
not the other.

NoMethodError: undefined method `size' for nil:NilClass

[GEM_ROOT]/gems/actionpack-2.1.0/lib/action_controller/streaming.rb:123:in
`send_data'
[RAILS_ROOT]/vendor/plugins/princely/lib/pdf_helper.rb:45:in
`make_and_send_pdf'
[RAILS_ROOT]/vendor/plugins/princely/lib/pdf_helper.rb:13:in `render'
[RAILS_ROOT]/app/controllers/driver_payments_controller.rb:13:in `print'

Anyone got any ideas?

Thanks.



Brijesh Shah wrote:
> Hi All,
>
> I want to generate pdf with css. I am using princely plugin.
>
> This is code which I written
>
>  def pdf
>    prince = Prince.new()
>    html_string = render_to_string(:template =>
> '/users/paid_invoice.pdf.erb')
>    send_data(
>      prince.pdf_from_string(html_string),
>      :filename => 'some_document.pdf',
>      :type => 'application/pdf'
>    )
> end
>
> But I am getting error of nil.size
>
>
> You have a nil object when you didn't expect it!
> You might have expected an instance of Array.
> The error occurred while evaluating nil.size
>
> RAILS_ROOT: /var/www/sortapp
> Application Trace | Framework Trace | Full Trace
>
> /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/streaming.rb:123:in
> `send_data'
> app/controllers/users_controller.rb:135:in `pdf'
>
> I also used make_and_send_pdf  function but got the same error.
> I thought I am getting error in render_to_string function.
>
> Can anyone tell me how can I solve this issues?
>
> Thanks in advance
Fde34ab22ac6ae44693f36b9f7fed41d?d=identicon&s=25 Brijesh Shah (brijesh)
on 2009-08-10 08:58
Attachment: htmldoc_gem_patch.txt (327 Bytes)
Hi

Unfortunately I don't remember it. I just remember that I applied a
patch in one of the file of gem.
Apply below patch in var/lib/gems/1.8/gems/htmldoc-0.2.0/lib/htmldoc.rb
file.

@result[:output] = result
result.split("\n").each do |line|
+ line.strip! (patch)
case line
    when /^BYTES: (\d+)/
    @result[:bytes] = $1.to_i

Patch file is attached.

Let me know if this is worked or not.

Thanks
Brijesh Shah

Ash Forsyth wrote:
> Did you ever figure out this problem?
>
> I have a working application and my code works on my laptop, but when I
> try it on our production server I come up with this error, but for the
> life of me I can't figure out why it is being thrown on one machine and
> not the other.
>
> NoMethodError: undefined method `size' for nil:NilClass
>
> [GEM_ROOT]/gems/actionpack-2.1.0/lib/action_controller/streaming.rb:123:in
> `send_data'
> [RAILS_ROOT]/vendor/plugins/princely/lib/pdf_helper.rb:45:in
> `make_and_send_pdf'
> [RAILS_ROOT]/vendor/plugins/princely/lib/pdf_helper.rb:13:in `render'
> [RAILS_ROOT]/app/controllers/driver_payments_controller.rb:13:in `print'
>
> Anyone got any ideas?
>
> Thanks.
>
>
>
> Brijesh Shah wrote:
>> Hi All,
>>
>> I want to generate pdf with css. I am using princely plugin.
>>
>> This is code which I written
>>
>>  def pdf
>>    prince = Prince.new()
>>    html_string = render_to_string(:template =>
>> '/users/paid_invoice.pdf.erb')
>>    send_data(
>>      prince.pdf_from_string(html_string),
>>      :filename => 'some_document.pdf',
>>      :type => 'application/pdf'
>>    )
>> end
>>
>> But I am getting error of nil.size
>>
>>
>> You have a nil object when you didn't expect it!
>> You might have expected an instance of Array.
>> The error occurred while evaluating nil.size
>>
>> RAILS_ROOT: /var/www/sortapp
>> Application Trace | Framework Trace | Full Trace
>>
>> /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/streaming.rb:123:in
>> `send_data'
>> app/controllers/users_controller.rb:135:in `pdf'
>>
>> I also used make_and_send_pdf  function but got the same error.
>> I thought I am getting error in render_to_string function.
>>
>> Can anyone tell me how can I solve this issues?
>>
>> Thanks in advance
Ffba8deaaf956220feebdc94f3d12fba?d=identicon&s=25 Aa Aa (troz101)
on 2009-08-11 08:15
This unfortunatly wasn't the problem, but I did manage to figure out I
only got it when running through mod_rails. We just deployed the app to
another server that was rebuilt from scratch and it is working now, so
no idea what the actual cause was.

Thanks for the help.
This topic is locked and can not be replied to.