swr*_*bel 14 ruby-on-rails to-yaml rails-console ruby-on-rails-3 ruby-on-rails-3.2
我正在尝试y object在Rails 3.2.6/Ruby 1.9.3控制台中使用为ActiveRecord对象获取格式良好的yaml输出,但由于某种原因它不适合我.我过去曾经用过它,但是在它破坏的路上.我尝试时得到以下输出:
NameError: undefined local variable or method `yaml' for main:Object
Run Code Online (Sandbox Code Playgroud)
Bra*_*dan 35
该y方法实际上是Syck YAML解析器/发射器实现的Kernel对象的扩展.以下是最后几行: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
Run Code Online (Sandbox Code Playgroud)
默认情况下,Ruby 1.9.3使用Psych解析器/发射器而不是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
Run Code Online (Sandbox Code Playgroud)
我也将利用这个机会来插入awesome_print,这基本上y可以解决YAML的所有问题.
| 归档时间: |
|
| 查看次数: |
5349 次 |
| 最近记录: |