You need to require 'yaml' before using the Array#to_yaml method (or any other
predefined to_yaml methods, for the matter). I guess Rails console already
does that itself, so there your code works. Regarding the documentation,
unfortunately the one you mention mixes 'core' classes (that is, classes and
modules which are always availlable) and 'standard library' classes (classes
and modules which are distributed with ruby but need to be required to be
used). The to_yaml method is defined in a file in the standard library, but
that can't be guessed from the documentation. If you want to generate the
documentation for only the core classes, you can follow the procedure
explained in this thread: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/294786
The documentation for only the standard library can be downloaded here: http://www.ruby-doc.org/stdlib/
I hope this helps
Stefano
···
On Wednesday 21 May 2008, Raj Singh wrote:
This is irb.
> irb
irb(main):001:0> a = %w[ 1 2 3 ]
=> ["1", "2", "3"]
irb(main):002:0> a.to_yaml
NoMethodError: undefined method `to_yaml' for ["1", "2", "3"]:Array
from (irb):2
This is Rails script/console
>> a = %w[ 1 2 3]
=> ["1", "2", "3"]
>> a.to_yaml
=> "--- \n- \"1\"\n- \"2\"\n- \"3\"\n"
However no where in ActiveSupport I can find where Rails is implementing
the method to_yaml.
I go to RDoc Documentation and look for Array methods. I see
to_yaml. So why in the irb I am getting undefined method to_yaml?
I go to RDoc Documentation and look for Array methods. I see
to_yaml. So why in the irb I am getting undefined method to_yaml?
rdoc, run over the ruby source, is dopey in that it parses the yaml files, sees that they modify core Ruby objects, then generates rdoc that presents those core objects as if they had yaml methods built-in.
In actual practice, you have to explicitly mix-in yaml to get that behavior.
Actually, you don't need to mix-in yaml. When you require yaml.rb, it will add
the generic to_yaml method to the Object class itself (or to the Kernel
module, I'm not sure) and the more specialized methods to those classes for
which they exist (such as Array, String and Hash). There's no mixing-in
involved, as far as I can tell.
Stefano
···
On Wednesday 21 May 2008, James Britt wrote:
> I go to RDoc Documentation and look for Array methods. I see
> to_yaml. So why in the irb I am getting undefined method to_yaml?
rdoc, run over the ruby source, is dopey in that it parses the yaml
files, sees that they modify core Ruby objects, then generates rdoc that
presents those core objects as if they had yaml methods built-in.
In actual practice, you have to explicitly mix-in yaml to get that
behavior.
Actually, you don't need to mix-in yaml. When you require yaml.rb, it will add the generic to_yaml method to the Object class itself (or to the Kernel module, I'm not sure) and the more specialized methods to those classes for which they exist (such as Array, String and Hash). There's no mixing-in involved, as far as I can tell.