2012-04-22 44 views
2

我试图拥有一个仅用于控制台的捆绑器组,如this article中所述。为了确保事情按预期发生,我在application.rb中注释了控制台组加载代码,并且还将捆绑器组重命名为:consoleX。令我惊讶的是,当我启动导轨控制台时,pry仍然在加载。为什么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)> 

如果我完全注释掉组,然后撬不加载。

这是怎么回事?

回答

3

因为捆绑将默认包含所有组中的所有宝石。捆绑没有特定的组运行:

bundle install --without group_name 

该设置会被记住,直到你改变它,所以任何将来调用捆绑安装或更新将不被排斥的群体运行。请参阅打包商docs

如果您按照Pry wiki的说明使用Pry代替IRB,这意味着如果Pry可用,则使用Pry;如果不可用,则使用IRB。因此,当您在Pry包中运行控制台时,即使您要求提供您不想包含的环境,也会被调用。

要解决此问题,您必须不在您的包中,然后在运行时您可以使用irb代替bundle exec rails console

如果你想更容易地在Pry和IRB之间来回切换,我建议不要monkeypatching Rails使用IRB而不是Pry。只需将Pry留在想要的组中并正常捆绑即可(撬在捆绑中),并且当您想使用Pry作为导轨控制台时,请致电pry -r ./config/environment。示例请参见Railscast

+0

当我发布了这个问题后,我意识到我已经指出了pry初始值设定项。我的目标是在应用程序运行时不加载不需要的代码,但在所有环境(包括生产环境)中仍然可以在控制台上进行撬动。所以我想我正在实现这一点,因为在应用程序运行时,pry从不“需要”。 – 2012-04-22 18:28:46

+0

(为了简单起见,我切换到了pry-rails gem并删除了初始化程序) – 2012-04-22 18:29:10

+0

很高兴知道,很高兴您的应用程序按照您的要求工作:) – Andrew 2012-04-22 18:30:02

相关问题