I\'m trying to use y object
in Rails 3.2.6/Ruby 1.9.3 console to get nicely formatted yaml output for an ActiveRecord object, but for some reason it isn\'t work
For rails 4/ruby 2 you could use just
puts object.to_yaml
The y
method is actually an extension to the Kernel
object put in place by the Syck YAML parser/emitter. Here are the last few lines of lib/ruby/1.9.1/syck.rb
:
module Kernel
def y( object, *objects )
objects.unshift object
puts( if objects.length == 1
YAML.dump( *objects )
else
YAML.dump_stream( *objects )
end )
end
private :y
end
By default, Ruby 1.9.3 uses the Psych parser/emitter instead of Syck (I can only presume they're pronounced differently), and Psych doesn't declare such a method.
If you really loved y
, you can simply use Syck instead of Psych in the console:
Loading development environment (Rails 3.2.5)
1.9.3p194 :001 > y 'hello'
NoMethodError: undefined method 'y' for main:Object
1.9.3p194 :002 > YAML::ENGINE.yamler = 'syck'
"syck"
1.9.3p194 :003 > y 'hello'
--- hello
nil
I'll also use this chance to plug awesome_print, which does for basically everything what y
does for YAML.