rakeコマンドが通らずに壮絶にハマった件

5c149d27e6

最近はRailsにも手を染め出した。
ちょっと触ってみるか程度だったつもりが、楽しくなってきて業務で使うアプリでもRailsで実装したくなったりするレベル。

ちょうどRubyが1.8の環境にrbenvを使って1.9を入れてRails3.2を動かそうとしていた日のこと、rakeコマンドが跳ね返されまくりた時の戒めメモ。

環境

今回ハマった環境に関して一応メモしておく

・Centos5.9・rbenv 0.4.0-67
・Ruby 1.9.3 (上記rbenvを使ってインスコ)
・gem 1.8.23
・Bundler 1.3.5

rubyはもともとyum で1.8が入っていたが1.9を使う必要があったので下記のページを参考にしつつrbenvを入れてから1.9を共存させPATH変えて1.9に向けた。

Cent OS 5.9 に rbenv で Ruby, bundler をインストール

ちなみに、CentOSでやる前にmacOSでも全く同じ事をして何の問題も無かった。。

rakeが通らない!

インストール自体は順調だった。
Railsも無事に入り、プロジェクトを作成 Gemfileを修正して bundle install これもOK

さて、dbとかをですね。。 と したときマン引きGメンの目が光った

$ rake db:create
 Could not find rake-10.1.0 in any of the sources
 Run `bundle install` to install missing gems.

え、さっき入れたばかりだと思うんですけれども。

$ bundle list
 Gems included by the bundle:
 (略)
 * rake (10.1.0)

あるやん。

$ bundle install
 Using rake (10.1.0)

やっぱり、あるやん。

どうしたものかと、ネットの大海原に出て行き、色々と見る。
すると、bundle で入れるgemはディレクトリを分けたほうがいいよ という話を聞く。

では、と 言われたとおりに vender/bundler へbundle install する事に。

しかし結果は変わらず。

$ rake db:create
 Could not find rake-10.1.0 in any of the sources
 Run `bundle install` to install missing gems.

ちなみに、

$ bundle install
 Using rake (10.1.0)
 (略)
 Your bundle is complete!
 It was installed into ./vendor/bundler

と出るので、成功してるとしか思えない
ところが、

$ rake db:create
 Could not find rake-10.1.0 in any of the sources
 Run `bundle install` to install missing gems.

といわれる。
クソがーーー

と唸っているとある異変に気が付く

$ rake --version
 rake, version 10.1.0

そうだよね。 rake入ってるよね。

問題はbundle

$ bundle exec rake --version
 Could not find rake-10.1.0 in any of the sources
 Run `bundle install` to install missing gems.

なんと!(( ;゚Д゚))
えと、 なにこれ。。。

ちょっとよく分からなくなってきたと思うけど
ライブラリPATHでしょうか。 問題は。

けどあんまそーゆーのいじった事がない人間なので、人頼み

こーゆー事になると大体stackoverflowにたどりついたりしますね。
っぽい記事がありました。

Could not find rake with bundle exec

これを見ると、 .bundle/config の
BUNDLE_DISABLE_SHARED_GEMS: ‘1’
の行を消せ! と書いてある。
※これはさっきbundle install の先を変えた際にconfigへ追加される行のひとつ
それで動く、 と。。。

え、けどこれって共通のgemを見なくする設定だよね。
さっきbundle install でvender/bundler にわざわざインストールしてるんですが。。
まぁいいや、消してみよ。

消した ⇒ ダメ

チッ。。(=゚ω゚)

詰んでるっぽい。 おれ詰んだっぽい。

HOMEディレクトリのgemを抹殺した結果www

どいういう経緯だったかさっぱり覚えてないが、自分のHOMEディレクトリに .gemなるディレクトリがって
なんか古いgem入ってるっぽかった。
もしかしたらbundleコマンドでvender/bundler配下にgemをinstallしてても、こっちが最初に見に行かれてるのかもしれない。
けどその覗き先を変更する方法がよう分からんのですたい。

えええい!
$ rm -rf .gem

で、何が起きたか?

$cd rails

$ rake db:create
db/development.sqlite3 already exists

動いたwwwwww
※てかdbはproject最初にたてるとき勝手に生成されるのかな。 まぁいいや。

まとめ

bundlerのやってることよくわからない。
rakeコマンドの中身までみたときあったけど、rubyの学習不足を感じた(←今回のエントリとあまり関係ない)
自分のホームディレクトリに(たぶん昔にソースからコンパイルした)gemが入っていたのがいけない。
てかHOMEに入れるやつ普通いない

おわり

2013-10-13 | Posted in RailsNo Comments » 


関連記事

Comment





Comment



*