よく見かけるrake aborted!で二つのrakeのバージョンがみる時
なぜそうなるかというと、複数のファイルでディレクトリ下で、システムでのrakeと独自で動いているファイルとでのrakeのバージョンが異なるが故に発生する。
複数同じディレクトリ下で開発していると下記の様な事が起きるのよく見かける。
rake aborted!
Gem::LoadError: You have already activated rake 10.4.2, but your Gemfile requires rake 10.5.0. Prepending bundle exec
to your command may solve this.
rakeコマンドの時にrakeの前に”bin”/や”bundle exec”をつけてコマンドする
これで気がすむなら一番早い。
というよりみんなこれで諦める。
$ bundle exec rake routes
$ bin/rake routes
どうせやるなら修正して見る
まずRubyが連動してRailsとちゃんと動く様に、PATHの確認を。
$ HOME/.rbenv/shims及び
$ HOME/.rbenv/binの確認。
ターミナルにて
$ env | grep PATH
export PATH="$HOME/.rbenv/bin:$PATH" >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
sourceは上記を実行するためのコマンドなので忘れずに。
バージョン管理さえしっかりしていればいい
同じディレクトリ内で複数の開発している時、
bundle installに気をつけなくてはならない。
なぜかというと、すべてのgemがお互いに依存関係から問題を起こし、
複数のgemが連動して、特定のgemが特定のバージョンに依存している場合、
すべてのgemをbundle installしてまうと、
動作してくなるのだ。
これはRailsの弱点の一つなる。
rakeをuninstallして指定し直す。
まず$ rails -vでバージョン確認
rakeも確認する。
$ gem list rake
*** LOCAL GEMS ***
rake (11.3.0)
gem uninstall rake -v 10.4.2
uninsatllする時に注意しなくてはならないのは、
この時にすべてのgemが影響してくる。
メッセージに沿ってyかnを立てよう。
二回聞かれる。
$ bundle update rake
ここまでくるとシステムでのbundleが修正される。
注意してinstallしていく
万が一ファイルごとにrails が消えてしてまったら。
ディレクトリでバージョンを指定してinsatll
$gem install rails --version="4.2.6"
私の場合bundlerを消してしまったので下記のコマンドを行なった。
$ gem update bundler
$ gem install bundler
bundleインストールをしなおした
$ bundle install
ここまでくるとシステムでのバージョンが新しくなってしまう。
というか私の場合新しくなってしまった。
プロジェクト作成ごとの修正
$ rails new sample --skip-bundle
この--skip-bundleがないとbundle installが一緒に走ってしまう。
この後に
$ bundle install --path vendor/bundle
--path vendor/bundle このオプションをつけるとrailsアプリのルートディレクトリにインストールする。
つまり独立性を保ってくれる。
つけないと次のプロジェクトrails newをした時に,
またYou have already activated rake xx.x.x,
but your Gemfile requires rake xx.x.x.が出てくる。
一度このコマンドをすれば、Bundlerはインストール先を指定するので次回以降は、
bundle installのみで大丈夫。
一時的にbundle execやbin/を省くなら。
”export PATH=$PWD/bin:$PATH”
ターミナル上でこれをやると、ターミナルを閉じるまで省ける。
ただターミナルを再起動した時は再びexport PATH=$PWD/bin:$PATH
どうしても気になったので、自分なりに調べたので、
備忘録として残しておく。
他の解決作も参考
http://qiita.com/ARTS_papa/items/b180176f3efd910b57d5
http://www.papa-programing.jp