【问题标题】:undefined method `y` for main: Object in rails consolemain 的未定义方法“y”:rails 控制台中的对象
【发布时间】:2012-10-20 02:38:25
【问题描述】:

我总是使用 'y' 方法在我的 rails 控制台中清理我的结果。但是它似乎不再起作用了。

我有结果要找到,我可以查看结果,但不是以干净的方式。这是我的 Rails 控制台:

Loading development environment (Rails 3.2.6)
1.9.3-p286 :001 > y Trip.all
  Trip Load (0.1ms)  SELECT "trips".* FROM "trips" 
NoMethodError: undefined method `y' for main:Object
    from (irb):1
    from /home/timen/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.6/lib/rails/commands/console.rb:47:in `start'
    from /home/timen/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.6/lib/rails/commands/console.rb:8:in `start'
    from /home/timen/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.6/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
1.9.3-p286 :002 >

【问题讨论】:

    标签: ruby-on-rails console rails-console


    【解决方案1】:

    这真的是我有生以来第一次听说y 方法。我一直使用ppp(后者包含'pp')或ap(带有awesome_print gem)。

    它不是 IRB 的一部分,也不是 pry 的一部分。

    它可能来自您已安装的特定 gem,因此请检查 gemfile 中的最新更改,或者您可能切换到 bundler 或 rvm,丢失了一些全局安装的 gem。

    天哪,这就是编辑

    y 由 yaml 库提供:

    require "yaml"
    

    将此添加到一些初始化脚本中,或添加到您的 .irbrc 文件中。

    天哪,它不起作用!

    它适用于普通 IRB,但不适用于 Rails 控制台....

    这就是为什么

    Rails console 'y' helper returns NameError rather than yaml-formatting output 表示 syck YAML 库在 ruby​​ 1.9.3 中被淘汰,取而代之的是 psych,它没有 y 方法。

    所以,请使用 awesome_print 或其任何较小的兄弟。

    【讨论】:

    • 我尝试在 Ruby 文件中安装 'awesome_print' gem 并要求 'awesome_print',但 y 方法仍未定义。你通过 awesome_print gem 得到了你的方法?
    • @BrettSanders awesome_print 不提供 y 方法。它提供了ap方法,比y厉害多了! y 在 ruby​​ 1.9.3 中根本不可用,原因如上所述(基础 YAML 库的更改)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2016-11-30
    相关资源
    最近更新 更多