2012-04-22 10 views
2

this articleで説明されているように、コンソール専用バンドルラーグループを作成しようとしています。期待どおりのことを確実にするために、私はapplication.rbのコンソールグループローディングコードをコメントアウトし、またbundlerグループの名前を:consoleXに変更しました。私が驚いたことに、レールコンソールを起動すると、まだまだロードされています。バンドル業者グループが存在しない場合でもなぜ使用されていますか?

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の指示に従ってIRBの代わりにPryを使用している場合は、Pryが使用可能な場合は使用され、そうでない場合はIRBのみが使用されます。だからあなたがバンドルでPryを使ってコンソールを実行すると、それが含まれたくない環境を求めても呼び出されます。

これを修正するにはバンドルに入れないでください。 bundle exec rails console代わりにirbを使用できます。

PryとIRBを簡単に切り替える場合は、Pryの代わりにIRBを使用するようにRailsをMonkeypatchingしないことをお勧めします。あなたが望むグループにPryを残して、バンドルを正常にバンドルして(バンドルに入れてください)、あなたのレールコンソールとしてPryを使用したいときは、pry -r ./config/environmentと呼んでください。例については、Railscastを参照してください。

+0

私は質問を投稿した後、私はあなたが指摘したように私は初期化子を持っていることに気づいた。私の目標は、アプリケーションの実行中に不要なコードをロードすることなく、プロダクションを含むすべての環境でコンソールを使用することです。だから、私はこれを達成していると思う。アプリが動いているときにpryが決して要求されないからだ。 –

+0

(脇に、私はpry-railsの宝石に切り替えて、単純化のためにイニシャライザを削除しました) –

+0

あなたのアプリが欲しいと思ってうれしいことを知っておいてね:) – Andrew

関連する問題