2

如本文所述,我正在尝试创建一个仅限控制台的捆绑程序组。为了确保事情按预期进行,我在 application.rb 中注释掉了控制台组加载代码,并将捆绑程序组重命名为:consoleX. 令我惊讶的是,当我启动 rails 控制台时,pry 仍在加载。

group :consoleX do
  gem 'pry'
  gem 'pry-doc'
  gem 'awesome_print'
end
➔ 捆绑 exec rails 控制台
加载开发环境(Rails 3.2.3)
[1] 撬(主)>

如果我完全注释掉该组,则不会加载 pry。

这里发生了什么?

4

1 回答 1

3

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

bundle install --without group_name

此设置将被记住,直到您更改它,因此将来对捆绑安装或更新的任何调用都将在没有排除组的情况下运行。请参阅捆绑程序文档

如果您按照Pry wiki中的说明使用 Pry 代替 IRB,这意味着如果 Pry 完全可用,则将使用 Pry,并且仅在不可用时使用 IRB。因此,当您在捆绑包中运行带有 Pry 的控制台时,即使您要求一个您不希望它包含在其中的环境,它也会被调用。

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

如果您想更轻松地在 Pry 和 IRB 之间来回切换,我建议不要对 Rails 进行猴子补丁以使用 IRB 而不是 Pry。只需将 Pry 留在您想要的组中并正常捆绑(pry 在捆绑包中),当您想使用 Pry 作为您的 rails 控制台调用时pry -r ./config/environment。有关示例,请参见Railscast 。

于 2012-04-22T18:18:27.337 回答