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

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)