Ответ 1
Метод y
на самом деле является расширением для объекта Kernel
, установленного с помощью Syck YAML parser/emitter. Вот несколько последних строк 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
По умолчанию Ruby 1.9.3 использует Psych parser/emitter вместо Syck (я могу только предположить, что они произнесены по-разному), а Psych не объявите такой метод.
Если вы действительно любили y
, вы можете просто использовать Syck вместо Psych в консоли:
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
Я также воспользуюсь этим шансом, чтобы подключить awesome_print, что делает в основном все, что y
делает для YAML.