Scott
2008-Apr-22 21:28 UTC
Calling to_yaml on an array of ActiveRecord objects is producing TypeError: wrong argument type nil (expected Data)
I have a query I am running from the console that is eager loading the address on the people model: people = People.find(:all, :include => [:address], :limit => 50) Trying to output that to yaml via: people.to_yaml Produces the following exception: TypeError: wrong argument type nil (expected Data) from /usr/local/lib/ruby/1.8/yaml.rb:387:in `emit'' from /usr/local/lib/ruby/1.8/yaml.rb:387:in `quick_emit'' from /usr/local/lib/ruby/1.8/yaml/rubytypes.rb:107:in `to_yaml'' from (irb):10 I don''t see any nil data in the include... thoughts? Thanks, Scott --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Stew Mckinney
2010-Jun-16 20:33 UTC
Re: Calling to_yaml on an array of ActiveRecord objects is producing TypeError: wrong argument type
I also run into the same error when running Spec tests that trigger Observers, which trigger DelayedJobs. The full stack trace: ruby-1.8.7-p249/lib/ruby/1.8/yaml.rb:391:in `emit'' ruby-1.8.7-p249/lib/ruby/1.8/yaml.rb:391:in `quick_emit'' ruby-1.8.7-p249/lib/ruby/1.8/yaml/rubytypes.rb:15:in `to_yaml'' vendor/bundler_gems/gems/delayed_job-2.0.3/lib/delayed/backend/base.rb:61:in `payload_object='' vendor/bundler_gems/gems/activerecord-2.3.5/lib/active_record/base.rb:2746:in `send'' vendor/bundler_gems/gems/activerecord-2.3.5/lib/active_record/base.rb:2746:in `attributes='' vendor/bundler_gems/gems/activerecord-2.3.5/lib/active_record/base.rb:2742:in `each'' vendor/bundler_gems/gems/activerecord-2.3.5/lib/active_record/base.rb:2742:in `attributes='' vendor/bundler_gems/gems/activerecord-2.3.5/lib/active_record/base.rb:2438:in `initialize'' vendor/bundler_gems/gems/activerecord-2.3.5/lib/active_record/base.rb:721:in `new'' vendor/bundler_gems/gems/activerecord-2.3.5/lib/active_record/base.rb:721:in `create'' vendor/bundler_gems/gems/delayed_job-2.0.3/lib/delayed/backend/base.rb:21:in `enqueue'' app/models/mail_opt_in_observer.rb:12:in `after_save'' app/models/mail_opt_in_observer.rb:11:in `each'' app/models/mail_opt_in_observer.rb:11:in `after_save'' vendor/plugins/state_machine/lib/state_machine/integrations/active_record/observer.rb:32:in `send'' vendor/plugins/state_machine/lib/state_machine/integrations/active_record/observer.rb:32:in `update'' I''ve been trying to find the root of this for a few days now and its getting a little frustrating. I''ve tried to re-open the class and do the following (because I noticed the error doesn''t occur when I *clone* the object and then call to_yaml). module ActiveRecord class Base to_old_yaml = self.instance_method(:to_yaml) define_method(:to_yaml) do clone = self.clone clone.id = self.id oh_boy = to_old_yaml.bind(clone).call #debugger #testtest = ''test'' return oh_boy end end end ...but this yields a similar error: wrong argument type String (expected Data)> Scott wrote: > I have a query I am running from the console that is eager loading the > address on the people model: > > people = People.find(:all, > :include => [:address], > :limit => 50) > > Trying to output that to yaml via: > > people.to_yaml > > Produces the following exception: > > TypeError: wrong argument type nil (expected Data) > from /usr/local/lib/ruby/1.8/yaml.rb:387:in `emit'' > from /usr/local/lib/ruby/1.8/yaml.rb:387:in `quick_emit'' > from /usr/local/lib/ruby/1.8/yaml/rubytypes.rb:107:in `to_yaml'' > from (irb):10 > > I don''t see any nil data in the include... thoughts? > > Thanks, > > Scott-- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.