Workaround for ActiveSupport::OrderedHash YAML bug

I

Ivo Wever

Hi,

I'm looking for a workaround for the problem that you can't
roundtrip a Hash with OrderedHashes as keys. The simplest demonstration,
using Ruby Enterprise 2011.03 (1.8.7 p334), ActiveSupport 3.0.4:

foo = {ActiveSupport::OrderedHash['x', 'y'] => 'z'}
=> {#<OrderedHash {"x"=>"y"}>=>"z"}

YAML.dump(foo)
=> "--- \n!omap ? \n - x: y\n: z\n\n"

The YAML that was dumped here is wrong. It should have been:
"--- \n? !omap \n - x: y\n: z\n\n"

To demonstrate:
YAML.load("--- \n!omap ? \n - x: y\n: z\n\n")
ArgumentError: syntax error on line 2, col -1: ` - x: y
: z

'

YAML.load("--- \n? !omap \n - x: y\n: z\n\n")
=> {#<OrderedHash {"x"=>"y"}>=>"z"}

This issue is probably related to
http://www.ruby-forum.com/topic/215047. Does anyone know a workaround
for this. I've been looking into the sources, but I fear it will take me
a while to figure it all out and perhaps someone here has a solution at
hand?
 
I

Ivo Wever

*bump*

Someone must surely have worked around this already? I've currently
resorted to changing the internal datastructure of the object where I
needed it from an OrderedHash to an Array of two-element Arrays, but
it's a bit of a stopgap.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top