YAML dump, load: class not properly reconstituted

Here’s some yaml:


  • :status: :failure
    :filename: !ruby/object:Pathname
    path: /mydev/ballots/432Leon200dpibw001.tif
  • :status: :failure
    :skew_angle: -0.72217746154481
    :rotated: -0.72217746154481
    :filename: !ruby/object:Pathname
    path: /mydev/ballots/432Leon200dpibw002.tif

When I load this back into Ruby, I get something like this from pp:

#<PBScorer:0x1010d9bc8

{:filename=>
#<Pathname:0x1010d5370
@class=“Pathname”,
@ivars=
{“path”=>"/mydev/iaharness/ballotsamples/432Leon200dpibw003.tif"}>}

In the debugger, the class of :filename seems to be YAML::something

So, it looks like the re-encoding of Pathname by Yaml got a bit
flumoxed. I’ve tried a bunch of small examples and can’t seem to get it
to reproduce.

Anyone spot whats wrong before I go deeper and deeper and depper?

Thanks,

Pito

On Nov 13, 2009, at 12:58 , Pito S. wrote:

path: /mydev/ballots/432Leon200dpibw002.tif

When I load this back into Ruby, I get something like this from pp:

#<PBScorer:0x1010d9bc8

{:filename=>
#<Pathname:0x1010d5370
@class=“Pathname”,
@ivars=
{“path”=>"/mydev/iaharness/ballotsamples/432Leon200dpibw003.tif"}>}

I suspect you’re not telling us all the relevant details. The following
code works fine:

  • :status: :failure
    :skew_angle: -0.72217746154481
    :rotated: -0.72217746154481
    :filename: !ruby/object:Pathname
    path: /mydev/ballots/432Leon200dpibw002.tif
    "

array = YAML.load(StringIO.new(yaml))

p array.first[:filename].absolute? # => true

If you comment out the pathname require, then it is a YAML object but it
is obvious about it: