rakeコマンド(rake db:migrate
など)を使ってRailsを学びました。しかし、私はbundle exec rake ...
をただ普通のrake
の代わりに使うべきだと読んだ。今私は使い方について混乱しています。バンドルのexec rakeまたはrakeを使用しますか?
の代わりにbundle exec rake
を使用する必要がありますか、それとも単なる好みのものですか?どんな洞察も大いに評価されるだろう!ありがとう!
rakeコマンド(rake db:migrate
など)を使ってRailsを学びました。しかし、私はbundle exec rake ...
をただ普通のrake
の代わりに使うべきだと読んだ。今私は使い方について混乱しています。バンドルのexec rakeまたはrakeを使用しますか?
の代わりにbundle exec rake
を使用する必要がありますか、それとも単なる好みのものですか?どんな洞察も大いに評価されるだろう!ありがとう!
bundle exec
は、バンドルのコンテキストでコマンドを実行します。
これは、Gemfileで指定されたgemを使用していることを意味します。多くの場合、bundle exec rake foo
を実行すると、rake foo
を実行した場合と同じ結果になります。特に、Gemfileと同じ宝石がシステム全体にインストールされている場合は同じです。ただし、一部のアプリケーションでは、システム全体でインストールしたものとは異なるバージョンのgemを指定する場合があり、正確なgemとバージョンを正しく実行できるようにする場合があります。 bundle exec
なしで実行すると、奇妙なエラーが発生することがあります。
bundle exec
を使用すると、gemfileで指定された環境でプログラムが実行されることが保証されます。これは、プログラムの作成者が実行したい環境であることを意味します。あなたがあなたのコンピュータに持っている不思議な設定。
基本的に、プログラムの実行環境を標準化しています。これはバージョン地獄を避け、人生をはるかに簡単にします。
詳細はhttp://bundler.io/v1.3/man/bundle-exec.1.htmlを参照してください。
bundle exec
なしでアクセシビリティを実行すると、システムにインストールされている最新のバージョンのGemがフェッチされます。
接頭辞の代わりにbundle exec
を追加すると、gemfile.lockのコンテキストで実行可能ファイルが実行されます。つまり、gemfile.lockのコンテキストで実行されます。つまり、gemファイルで定義されたバージョンを使用して実行されます。
$ execをすくいデシベルをバンドル:
を移行rakeタスクdb:migrate
を実行するためにGemfileで指定されたレーキのバージョンを使用します。
ただし、Gemfileにはレーキの宝石はありません!
はい、しかし、レーキの宝石は、他の宝石の依存関係としてインストールされていました.Gemfile.lockにあります。ルールは次のようにする必要があります:Gemfile.lockで指定されたレーキのバージョンを使用します。
しかし、Gemfile.lockには特定のバージョンが指定されていません。これはx.y!より大きいバージョンを指定しています!
ルールは以下の通りでなければなりません:現在のジェムセットにインストールされているレーキのバージョンを使用します。
$すくいデシベル:例えば、コマンドラインでコマンドを発行
通常の、移行rakeでは、PATH環境変数で指定されたディレクトリのリスト内のコマンドが検索されます。コマンドを含む最初のディレクトリは、使用されているコマンドのバージョンです。があなたがbundle install
でインストールとは別のすくい宝石を使用することが
$ rake db:migrate
、
$ which rake
をあなたが実行した場合:あなたが行うことができますこれは、ディレクトリ、参照してください。しかし、あなたのシステムがbundle exec
と同じレーキバージョンを見つけたとしても、レーキソースコードで必要とされる宝石は、プロジェクトのgemset外の場所で検索されます。したがって、多くの方法があるだけです。
$ rake db:migrate
ねじを締めることがあります。
rvm 1.11.x +を使用している場合は、Ruby on Railsチュートリアル・ブック(無料オンライン)によると、コマンドの前には、bundle exec
を付ける必要はありません。
良いこと、ありがとう –
バンドルexecを常に入力するのにうんざりする場合は、rvmを設定することができます。http://ruby.railstutorial.org/chapters/static-pages#sec:eliminating_bundle_exec –
注:Bundleのマニュアルページ変更されました。この日付の正しい時刻は次のとおりです:http://bundler.io/v1.3/man/bundle-exec.1.html –
'bundle exec'を使用することの良い副作用は、 'bundle install'を実行してgemfile.lockファイルと比較して紛失している宝石のバージョンをインストールする必要がある場合。 –