bundler Execコマンドを入力するたびに

5091 ワード

bundler Execコマンドを入力するたびに
bundleはrubyの世界で良いもので、アプリケーションの依存ライブラリを管理することができます.指定したgemを自動的にダウンロードしてインストールしたり、指定したgemをいつでも更新したりすることができます.
rvmは、複数のruby環境を簡単にインストールし、管理できるコマンドラインツールです.各環境は一連のgemを指定することができる.各プロジェクトにrubyのバージョン、必要なgemのバージョンを指定できます.これによりruby環境の違いや、異なるバージョンのgemによる様々な問題を最大限に回避できます.
プロジェクトにrvmを導入した後、rakeコマンドを使用すると、そのたびにこのような異常が発生します.
1
2
3
4
5
6
7
8
rake aborted! You have already activated rake 10.0.0, but your Gemfile requires rake 0.9.2.2. Using bundle exec may solve this. /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler/runtime.rb:31:in `block in setup' /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler/runtime.rb:17:in `setup' /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler.rb:116:in `setup' /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler/setup.rb:7:in `<top (required)>' /Users/twer/sourcecode/octopress/Rakefile:2:in `<top (required)>' (See full trace by running task with --trace) 

この異常から、rakeの10.0.0バージョンが自分のマシンにインストールされているため、このプロジェクトで構成されているrakeバージョンは0.9.2.2なので、rakeコマンドを実行するときにGemfileを使用する必要があります.bundle execは、現在のbundleのコンテキストでスクリプトを実行できます.このプロジェクトで指定したrakeバージョンを呼び出すことで、コマンドを実行できます.
以下は公式ドキュメントの説明です.
In some cases, running executables without bundle exec may work, if the executable happens to be installed in your system and does not pull in any gems that conflict with your bundle. However, this is unreliable and is the source of considerable pain. Even if it looks like it works, it may not work in the future or on another machine.
だから私たちは命令を実行するたびにbundle execの接頭辞を加えればいいのです.しかし、このようなことをするのは面倒で、毎日百回もこのような文字をたたくことを考えてみて、しかもよく忘れます.
毎回bundle execをプレフィックスとして入力しない方法があります.
rubygems-bundlerをインストールします.
1
$ gem install rubygems-bundler 

次に、次のように実行します.
1
$ gem regenerate_binstubs 

RVM hookを有効にするには、次の手順に従います.
1
2
$ rvm get head && rvm reload $ chmod +x $rvm_path/hooks/after_cd_bundler 

自分のプロジェクトのbundler stubsを作成します.
1
2
$ cd your_project_path $ bundle install --binstubs=./bundler_stubs 

最後にterminalを再開するとrubyコマンドを直接実行でき、bundler exec接頭辞を付ける必要はありません.
セカンダリbundlerを無効にするには、コマンドの前にNOEXEC_DISABLE=1の接頭辞を付けるだけです.より詳細な情報は、[rubygems-bundler]のドキュメントを参照してください.
作成者:
黄博文
@無敵北瓜  
出典:
http://www.cnblogs.com/huang0925
黄博文の地盤
本文の著作権は本人とブログ園が共有しているので、転載を歓迎しますが、著者の同意を得ずにこの声明を保留し、文章のページの明らかな位置で原文の接続を与えなければなりません.そうしないと、法律責任を追及する権利を保留します.
 
分類:
プログラミング開発