LoginSignup
206

More than 5 years have passed since last update.

MacOSX-Lionでrbenvを使ってRubyOnRailsの環境構築すると、以下のようなメッセージが出てドハマリしたけど、なんとか解決したことについてのメモ(推理なので正しいかどうかの確証持てない)

Last updated at Posted at 2012-04-23

Last-Update:2012/04/23

メッセージはこちら↓

泣くほどみた無限ループメッセージ
Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.

で、いくらsudo gem install railsを入力しても、railsコマンドを実行すると上記メッセージが表示されて変わらないと。

状況はといえば
非常に丁寧なこちらの解説サイトを参考に
homebrewでruby-buildとrbenvをインストールして、ruby本体はrbenvにてインストールしたものが動いている状態でした。

で、railsがいくらやっても動かないと。

ここで、一から整理しながら考えてみて、rbenvやgemの仕組みを調べてみたところ

  • gemはシステム(Mac本体)ではなく、rubyが持つツールである。
  • rbenvでは、rubyごとにgemを持つ。

ということ。

なので、いくらrbenvでrubyのモードを切り替えても、gem自体はシステムデフォルトのrubyのgemが使われていた様子。
さらに、rbenvでいれたrubyごとにgemを持つから、rbenvではrubyを入れる(切り替える)ごとにgemファイルが変わる模様(それを回避する方法もあるそうな。)

つまり私のドハマリした状況は

  • ruby⇛rbenvのものが作動(1.9.3系)
  • gem⇛MacOSXのデフォルトのruby(1.8.7系)のgemが作動
  • rails⇛上記のgemでinstallされたから、デフォルトruby内のgemに配置=/usr/bin/の中のrailsが使われている

という入り組んだ状態になっていた。

調べてみると、railsは確かに/usr/bin/の中から呼ばれている。

正しく動作させるには

  • gem⇛rbenvで入れたruby1.9.3系のgemを起動させるようにする
  • rails⇛rbenv内のrubyの指定位置から呼ばれるようにする

ということで、.bashrcなどにPATHを記述してPATHを貼り直す(システムの優先順位を決める:/usr/bin/よりもrbenvのものを優先させる)

ここで注意点?がありまして
いろんな「rbenvを使ったruby環境構築解説記事」では、PATHの指定が以下のようになっている

export PATH="$HOME/.rbenv/bin:$PATH"

が、いくら探しても~/.rbenv/のなかに、binというフォルダはない。私が特殊なのか、仕様が変わったのかはわかりません。

しかし、かわりに「shims」という似たようなフォルダを見つけた。
どうやら、この中にいろんなシステムが入っている様子。

ということで、.bashrcに以下を追記

export PATH="$HOME/.rbenv/shims:$PATH"

その後、gem install railsとしてrailsをインストールすると…

動いた!!

まとめると

gemとはrubyそれぞれがもつツールである。しかし、rbenvをいれてもMacOSXはデフォルトでrubyとgemを持っているから、いくらgemコマンドを打ち込んでもデフォルトのrubyのgemが起動してしまう。gemコマンドが自分が使いたいrbenvのrubyで動くように、きちんとPATHを指定する必要がある。そうすれば、railsだって動く

ということです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
206