Yaml and self-referential data

I have a data structure (Arrays and Hashes mixed in a soup) that is
fairly self-referential, i.e. it has cycles. When I try to do
foo.to_yaml, it complains:

/opt/local/lib/ruby/1.8/yaml.rb:382:in quick_emit': stack level too deep (SystemStackError) from /opt/local/lib/ruby/1.8/yaml/rubytypes.rb:164:into_yaml’
from /opt/local/lib/ruby/1.8/yaml/rubytypes.rb:41:in
node_export' from /opt/local/lib/ruby/1.8/yaml/rubytypes.rb:41:inadd’
from /opt/local/lib/ruby/1.8/yaml/rubytypes.rb:41:in to_yaml' from /opt/local/lib/ruby/1.8/yaml/rubytypes.rb:40:ineach’
from /opt/local/lib/ruby/1.8/yaml/rubytypes.rb:40:in to_yaml' from /opt/local/lib/ruby/1.8/yaml/rubytypes.rb:39:inmap’
from /opt/local/lib/ruby/1.8/yaml/rubytypes.rb:39:in to_yaml' ... 6502 levels... from /opt/local/lib/ruby/1.8/yaml.rb:387:inemit’
from /opt/local/lib/ruby/1.8/yaml.rb:387:in quick_emit' from /opt/local/lib/ruby/1.8/yaml/rubytypes.rb:107:into_yaml’
from ./yaml.rb:43

However, on the small testing scale it works fine:

  • &id004
    name: foo
    famc: &id002
    • &id001
      name: bar
      fams: *id002
      famc: &id005
      • *id001
    • &id003
      name: baz
      fams: *id002
      famc: &id006
      • *id003
    • *id004
  • *id001
  • *id003
  • *id002
  • *id005
  • *id006

Is there anything I can do to help the to_yaml method along? Maybe tell
it to be eager about using aliases or something?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs