chroju.dev/blog

the world as code

Bundle execサボってエライ目にあった

今までよくわからなくてほっといたけどこれ使わなきゃダメだったわ……

bundle exec rails g devise:install

Railsのログイン機構作るためにDevise入れてみてたんだけど、本来上のコマンドを入れるべきところでふつーにrails g devise:installとしてしまった。そしてrails g devise User ゴニョゴニョ。すると何が起きたか。

title="スクリーンショット_2013-12-08_22.57.54-3 by chroju, on Flickr">スクリーンショット_2013-12-08_22.57.54-3

い……いねぇ……。確かにgenerateしたはずなのにurbはあるけどコントローラーもヘルパーもねぇ……。でもね、この状態でブラウザ開くとなんかログインできるんだよ。動くんだよ。幽霊かと。お前ソースはどこにあんのかと。んで探ってみたらあった。

title="スクリーンショット 2013-12-08 22.57.19 by chroju, on Flickr">スクリーンショット 2013-12-08 22.57.19

なんかすげえとこにあった!!!!

あー、要はこれがbundle execの有無による違いね。bundle execプレフィックスを付けると今の環境のGemfileからインストールしてくれるけど、付けない場合はシステム側のRubyにdeviseをインストールしてしまう。だからこんなとこにいろいろ入ってしまったと。あー。失敗だ……。

なんかbundle execを省略する方法もあるらしいけど、よくわかってないものをよくわかってないままに省略するのも危険なので、しばらくは自戒込めてプレフィックス付けるようにします。