加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails控制台’y’帮助器返回NameError而不是ya

发布时间:2020-12-16 20:48:41 所属栏目:百科 来源:网络整理
导读:我试图在Rails 3.2.6 / Ruby 1.9.3控制台中使用y对象,为ActiveRecord对象获得格式良好的yaml输出,但由于某种原因,它不适用于我.我曾经使用过它,但在某种程度上破坏了它.当我尝试以下输出时: NameError:未定义的局部变量或方法`yaml’for main:Object 解决
我试图在Rails 3.2.6 / Ruby 1.9.3控制台中使用y对象,为ActiveRecord对象获得格式良好的yaml输出,但由于某种原因,它不适用于我.我曾经使用过它,但在某种程度上破坏了它.当我尝试以下输出时:

NameError:未定义的局部变量或方法`yaml’for main:Object

解决方法

y方法实际上是由 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,它基本上是YAML所做的一切.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读