rvm使うときはgemのオプションに--user-installつけない

rvmで入れたRubyを使ってるときに、sudoつけずにgemで何か入れようとするとなんだかおかしなことになってハマったのでメモ。原因は.gemrcに書いてた--user-installでした。

経緯

  1. rvmをいれました
  2. rvm install ruby-1.9.2-rc2
  3. rvm use ruby-1.9.2-rc2
  4. gem install rails --pre

で、gemの警告が出るんですが、インストールはうまく行ったような感じになる。でもそのあとで gem list すると何も入ってない。

% gem install rails --pre
WARNING:  You don't have /Users/hibariya/.gem/ruby/1.9.1/bin in your PATH,
          gem executables will not run.
Successfully installed activesupport-3.0.0.rc
Successfully installed builder-2.1.2
Successfully installed i18n-0.4.1
Successfully installed activemodel-3.0.0.rc
Successfully installed rack-1.2.1
Successfully installed rack-test-0.5.4
Successfully installed rack-mount-0.6.9
Successfully installed tzinfo-0.3.22
Successfully installed abstract-1.0.0
Successfully installed erubis-2.6.6
Successfully installed actionpack-3.0.0.rc
Successfully installed arel-0.4.0
Successfully installed activerecord-3.0.0.rc
Successfully installed activeresource-3.0.0.rc
Successfully installed mime-types-1.16
Successfully installed polyglot-0.3.1
Successfully installed treetop-1.4.8
Successfully installed mail-2.2.5
Successfully installed actionmailer-3.0.0.rc
Successfully installed thor-0.14.0
Successfully installed railties-3.0.0.rc
Successfully installed bundler-1.0.0.rc.2
Successfully installed rails-3.0.0.rc
23 gems installed
<<以下略...>>

railsコマンドを叩いても何か既存のやつが呼ばれておかしなことに。

% rails --version
/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
        from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate'
        from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `gem'
        from /opt/local/bin/rails:18

--user-install つけないほうがいい

~/.gemrcに記述していたオプションを外せばこの現象はなくなる。

gem: --user-install

これがついてるとGem.user_dirがGEM_HOMEとして使われて、~/.gem 以下にgemがインストールされる。普通はこれでいいんですけど、rvmは~/.rvm以下にそれぞれのバージョンのRuby環境をごっそり入れているので、意図しない場所にgemが飛び散る。なのでこのオプションは使わない方がいいみたい。

その他

よくわからないのは、今回使ったのはruby-1.9.2-rc2なんですが、PATHのいたるところに1.9.1っていうのが入っていて、はじめこれも何か原因があるのかと思っていたけど、なんかこれは問題ないみたい(本当に?)。RC版だからなのかなーとか思ってそのまま使ってます。
→(20100801追記)問題ないみたいでした。
 Yukihiro Matsumoto on Twitter: "@pussy_cat そういえば1.9.2と1.9.1はバイナリレベルでコンパチなのでバージョン番号変えなかったと聞いたような。"