为什么即使它的捆绑组不是使用pry?

时间:2012-04-22 18:03:34

标签: ruby-on-rails ruby bundler pry

我正在尝试拥有一个仅限控制台的捆绑组,如this article中所述。为了确保事情按预期发生,我都在application.rb中注释掉了控制台组加载代码,并将绑定程序组重命名为:consoleX。令我惊讶的是,当我启动轨道控制台时,pry仍然被装载。

group :consoleX do
  gem 'pry'
  gem 'pry-doc'
  gem 'awesome_print'
end
➔ bundle exec rails console
Loading development environment (Rails 3.2.3)
[1] pry(main)> 

如果我完全注释掉了这个组,那么就不会加载pry。

这里发生了什么?

1 个答案:

答案 0 :(得分:3)

因为bundle默认包含所有组中的所有gem。要在没有特定组的情况下进行捆绑运行:

bundle install --without group_name

在您更改此设置之前,将记住此设置,因此将来运行捆绑安装或更新的任何调用都将在没有排除组的情况下运行。请参阅捆绑工具docs

如果您按照Pry wiki的说明使用Pry代替IRB,这意味着如果Pry完全可用,将使用Pry,如果不是,则使用IRB。因此,当您在捆绑包中使用Pry运行控制台时,即使您要求的环境不需要它,也会调用它。

要解决这个问题,必须不在你的软件包中,然后当你运行bundle exec rails console时,你可以改用irb。

如果你想更容易在Pry和IRB之间来回切换,我建议不要使用IRB monkeypatching Rails来代替Pry。只需将Pry留在您想要的组中并正常捆绑(pry在捆绑中),当您想使用Pry作为rails控制台时调用pry -r ./config/environment。有关示例,请参阅Railscast