ruby-on-rails - Rails 控制台 'y' 助手返回 NameError 而不是 yaml 格式输出

标签 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 rails-console to-yaml

我正在尝试使用 y object在 Rails 3.2.6/Ruby 1.9.3 控制台中为 ActiveRecord 对象获得格式良好的 yaml 输出,但由于某种原因它对我不起作用。我过去使用过它,但在途中的某个地方它坏了。当我尝试时,我得到以下输出:

NameError: undefined local variable or method `yaml' for main:Object

最佳答案

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 做。

关于ruby-on-rails - Rails 控制台 'y' 助手返回 NameError 而不是 yaml 格式输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11571801/

相关文章:

ruby-on-rails - NoMethodError(未找到 R 函数 "get")

html - Slim 模板 - 删除 block 标记周围的空格

ruby-on-rails - rails 3 : How not to include column's name in a validation message without plugins?

ruby-on-rails - 处理 "composed classes"

ruby-on-rails-3 - 在 Rails 3 中使用连接获取数据的范围

ruby-on-rails - 默认: { action: 'method' } do in rails routes?是什么

capybara - 从 Rspec 文件访问 rails_admin url 助手

javascript - 编辑表格上的值后如何更新字段(使用 jquery 或 javascript)

ruby-on-rails-3.2 - 将导入的 scss 文件命名为 .scss 或 .css.scss

ruby-on-rails - Rails axlsx_rails gem 。在现有行之间插入新行