2016-07-07 11 views
0

rvm currentは、特定のジェムセットに切り替えたと言います。gem listにはrakeという宝石が1つのみ記載されています。なぜ、bundle execの前に追加する必要がありますか?ジェムセット使用時に `bundle exec`が必要な理由は?

$ rvm current 
[email protected] 

$ gem list rake 

*** LOCAL GEMS *** 

rake (10.4.2) 

$ rake 
rake aborted! 
Gem::LoadError: You have already activated rake 10.4.2, but your Gemfile requires rake 11.1.2. Prepending `bundle exec` to your command may solve this. 
/home/rm/.rvm/gems/[email protected]/gems/bundler-1.12.5/lib/bundler/runtime.rb:35:in `block in setup' 
/home/rm/.rvm/gems/[email protected]/gems/bundler-1.12.5/lib/bundler/runtime.rb:20:in `map' 
/home/rm/.rvm/gems/[email protected]/gems/bundler-1.12.5/lib/bundler/runtime.rb:20:in `setup' 
/home/rm/.rvm/gems/[email protected]/gems/bundler-1.12.5/lib/bundler.rb:95:in `setup' 
/home/rm/.rvm/gems/[email protected]/gems/bundler-1.12.5/lib/bundler/setup.rb:9:in `<top (required)>' 
/home/rm/app/releases/20160707125838/config/boot.rb:3:in `<top (required)>' 
/home/rm/app/releases/20160707125838/config/application.rb:1:in `<top (required)>' 
/home/rm/app/releases/20160707125838/Rakefile:4:in `<top (required)>' 
LoadError: cannot load such file -- bundler/setup 
/home/rm/app/releases/20160707125838/config/boot.rb:3:in `<top (required)>' 
/home/rm/app/releases/20160707125838/config/application.rb:1:in `<top (required)>' 
/home/rm/app/releases/20160707125838/Rakefile:4:in `<top (required)>' 
(See full trace by running task with --trace) 

UPDは私が自分自身をより明確にしましょうrm gemsetがアクティブですが、そこにはrakeという宝石しか表示されません(10.4.2)。しかしrake-11.1.2bundlerでインストールされました。 bundle exec rakeを実行すると、rake-11.1.2が呼び出されます。だから、私は宝石のリストでそれを見ないのですか?gemによって報告されていますか?宝石のセットを別のものから分離するとは思われません。

ああ、それは生産マシンだと言いました。

答えて

0

開発マシンでbundlergemの宝石をインストールします。そして、あなたはgem listの出力でそれらを見ることができます。しかし、プロダクションサーバーでは通常、別のディレクトリにインストールされます。それは特に--deploymentのオプションです。または、--pathオプションで宝石の場所を変更することもできます。

1

rakeコールではrake 11.1.2を使用する必要がありますが、ローカルマシンのデフォルトはrake 10.4.2です。したがって、bundle execでコールをプリペアしないと、デフォルト(10.4.2)が使用されます。バンドルのexecは、常にプロジェクトのgemfileで指定されたgemのバージョンを使用しているので、bundle execを使うのがベストプラクティスです

0

gemsetを適切に設定していないかもしれません。 1つのgemsetに同じgemの複数のバージョンがある場合は、bundle execを使用する必要があります。あなたのプロジェクトに特定のジェムセットを作成して使用してみてください。明示しなかった場合はrvmがデフォルトのものを使用して、宝石がいっぱいです。

関連する問題