【问题标题】:Why is pry being used even when its bundler group is not?为什么即使没有捆绑器组也使用 pry?
【发布时间】:2012-04-22 18:03:33
【问题描述】:

我正在尝试创建一个仅限控制台的捆绑程序组,如 this article 中所述。为了确保事情按预期进行,我在 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。

这是怎么回事?

【问题讨论】:

    标签: ruby-on-rails ruby bundler pry


    【解决方案1】:

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

    bundle install --without group_name
    

    在您更改此设置之前,系统会一直记住它,因此以后对捆绑安装或更新的任何调用都将在没有排除组的情况下运行。请参阅捆绑程序 docs

    如果您按照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

    【讨论】:

    • 在我发布问题后,我意识到我有你指出的撬初始化器。我的目标是在我的应用程序运行时不加载不需要的代码,但在所有环境(包括生产环境)中仍然可以窥探控制台。所以我想我正在实现这一点,因为当应用程序运行时,pry 永远不会是required。
    • (顺便说一句,为了简单起见,我切换到了 pry-rails gem 并删除了初始化程序)
    • 这并不完全正确。 bundler 安装的东西与是否需要它无关。这完全取决于调用 Bundle.require 时包含哪些组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2016-07-09
    • 1970-01-01
    • 2016-01-11
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多