Rails控制台出现undefined method `y` for main: Object错误。

4
我通常在Rails控制台中使用“y”方法来使我的结果变得更加整洁。然而,现在这种方法似乎已经不起作用了。
我需要找到相应的结果,虽然可以查看结果,但并不是以整洁的方式呈现。以下是我的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 >
1个回答

6
这是我生命中第一次听说y方法。我一直使用ppp(在包含'pp'后者)或ap(带有awesome_print宝石)。
它不是IRB或pry的一部分。
它可能来自您安装的特定宝石,请检查gemfile中的最近更改,或者您切换到bundler或rvm,失去了一些全局安装的宝石。
天啊,那就是编辑。 y由yaml库提供:
require "yaml"

将以下内容添加到某个初始化脚本或您的.irbrc文件中。
哦,天啊,它不起作用!
它在原始IRB中有效,但在Rails控制台中无效...
现在知道为什么了。 Rails控制台'y'帮助程序返回NameError而不是yaml格式输出表明,在ruby 1.9.3中,syck YAML库被淘汰,改用没有y方法的psych
因此,请使用awesome_print或其任何较低版本。

我尝试安装'awesome_print' gem并在Ruby文件中引用'awesome_print',但是我的方法仍然未定义。你通过awesome_print gem得到了y方法吗? - Brett Sanders
@BrettSanders awesome_print 没有提供 y 方法。它提供了 ap 方法,比 y 更加强大!在 Ruby 1.9.3 中根本没有 y 方法,原因是底层 YAML 库的更改。 - rewritten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接