[Rails] 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@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home