Ruby on rails rails控制台中main:Object的未定义方法“y”

Ruby on rails rails控制台中main:Object的未定义方法“y”,ruby-on-rails,console,rails-console,Ruby On Rails,Console,Rails Console,我总是使用“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'

我总是使用“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 >
加载开发环境(Rails 3.2.6)
1.9.3-p286:001>y跳闸。所有
跳闸负载(0.1ms)从“跳闸”中选择“跳闸”。*
NoMethodError:main:对象的未定义方法“y”
来自(irb):1
from/home/timen/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.6/lib/rails/commands/console.rb:47:在“开始”中
from/home/timen/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.6/lib/rails/commands/console.rb:8:在“开始”中
from/home/timen/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.6/lib/rails/commands.rb:41:in`'
来自脚本/rails:6:in'require'
来自脚本/rails:6:in`'
1.9.3-p286:002>

这是我有生以来第一次听说
y
方法。我一直使用
p
pp
(后者包括
'pp'
)或
ap
(与
awesome\u print
gem一起使用)

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

它可能来自您安装的特定gem,所以请检查您的gem文件中最近的更改,或者您切换到bundler或rvm,丢失了一些全球安装的gem

哦,天哪,这就是编辑

y
由yaml库提供:

require "yaml"
将其添加到一些初始化脚本或
.irbrc
文件中

哦,天哪,它坏了

它在香草IRB中工作,但在rails控制台中不工作

这就是为什么

表示在ruby 1.9.3中,
syck
YAML库被逐步淘汰,取而代之的是
psych
,它没有
y
方法


因此,请使用
awesome\u print
或其他较小的同类产品。

我尝试安装“awesome\u print”gem,并要求在Ruby文件中使用“awesome\u print”,但y方法仍然没有定义。您通过awesome_print gem获得了y方法?@BrettSanders
awesome_print
不提供
y
方法。它提供了
ap
方法,比
y
更棒<代码>y在ruby 1.9.3中根本不可用,原因如上所述(底层YAML库的更改)