Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > YAML dump, load: class not properly reconstituted

Reply
Thread Tools

YAML dump, load: class not properly reconstituted

 
 
Pito Salas
Guest
Posts: n/a
 
      11-13-2009
Here's some yaml:

---
- :status: :failure
:filename: !ruby/objectathname
path: /mydev/ballots/432Leon200dpibw001.tif
- :status: :failure
:skew_angle: -0.72217746154481
:rotated: -0.72217746154481
:filename: !ruby/objectathname
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
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Ryan Davis
Guest
Posts: n/a
 
      11-13-2009

On Nov 13, 2009, at 12:58 , Pito Salas wrote:

> Here's some yaml:
>=20
> ---
> - :status: :failure
> :filename: !ruby/objectathname
> path: /mydev/ballots/432Leon200dpibw001.tif
> - :status: :failure
> :skew_angle: -0.72217746154481
> :rotated: -0.72217746154481
> :filename: !ruby/objectathname
> path: /mydev/ballots/432Leon200dpibw002.tif
>=20
> When I load this back into Ruby, I get something like this from pp:
>=20
> #<PBScorer:0x1010d9bc8
>=20
> {:filename=3D>
> #<Pathname:0x1010d5370
> @class=3D"Pathname",
> @ivars=3D
> =

{"path"=3D>"/mydev/iaharness/ballotsamples/432Leon200dpibw003.tif"}>}

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

> #!/usr/bin/ruby -w
>=20
> require 'yaml'
> require 'pathname'
>=20
> # I had to fix your YAML indentation
> yaml =3D "---
> - :status: :failure
> :filename: !ruby/objectathname
> path: /mydev/ballots/432Leon200dpibw001.tif
> - :status: :failure
> :skew_angle: -0.72217746154481
> :rotated: -0.72217746154481
> :filename: !ruby/objectathname
> path: /mydev/ballots/432Leon200dpibw002.tif
> "
>=20
> array =3D YAML.load(StringIO.new(yaml))
>=20
> p array.first[:filename].absolute? # =3D> true


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

> #<YAML::Object:0x1004abb80 @class=3D"Pathname", =

@ivars=3D{"path"=3D>"/mydev/ballots/432Leon200dpibw001.tif"}>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
YAML Problem YAML::Object Fransiscus Xaverius Ruby 2 12-14-2007 09:17 PM
yaml.rb and YAML "%" directives Joshua Choi Ruby 1 01-14-2007 07:53 AM
Puzzling over why ri can open the std ruby/ri .yaml files, but raw yaml can't Eric Promislow Ruby 4 10-31-2006 10:15 PM
YAML.dump/YAML.load bug Paul Battley Ruby 0 08-03-2005 08:28 PM
YAML Question: Using YAML::YamlNode#transform Method to get float values? RubyQuestions Ruby 0 12-03-2003 02:15 AM



Advertisments