rvmの環境を作り直す。

rvmの環境になぜかrootが作ったディレクトリができてやがってむきーとなってインストールしなおす。後悔はしてない。元々訳も分からずインストールしてしちゃってたし。

http://rvm.beginrescueend.com/rvm/install/

でオススメされている方法でインストールしなおし。

$ sudo rm -rf ~/.rvm
$ bash < <(curl http://rvm.beginrescueend.com/releases/rvm-install-head)

今日の時点では中身はこんな感じ

#!/usr/bin/env bash
if [[ -f /etc/rvmrc ]] ; then source /etc/rvmrc ; fi
if [[ -f "$HOME/.rvmrc" ]] ; then source "$HOME/.rvmrc" ; fi
rvm_path="${rvm_path:-$HOME/.rvm}"
mkdir -p $rvm_path/src/
cd $rvm_path/src

rm -rf ./rvm/ && git clone --depth 1 git://github.com/wayneeseguin/rvm.git
cd rvm
dos2unix scripts/* >/dev/null 2>&1
bash scripts/install

でインストールできたら、

if [[ -s ~/.rvm/scripts/rvm ]] ; then source ~/.rvm/scripts/rvm ; fi

を.bashrcと.bash_profileに追加。特にreturnで抜けてしまうことがないようにその前に書くように注意書きがあった。でターミナルを閉じて新しいターミナルを開く。

~$ rvm -v

rvm 0.1.28 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]

インストールできてる。わーい

一気に複数のrubyとかをインストール

$ source $HOME/.rvm/scripts/rvm
$ rvm install 1.8.6,1.8.7,1.9.1,jruby

これで一気にインストールできる。

railsも一気にインストールしちゃう

$ rvm gem install rails

やたらとインストールが早く終わったので心配でみてみたら

~$ rvm 1.8.7
~$ gem list
/Users/takeshi/.rvm/rubies/ruby-1.8.7-p249/bin/gem:4: warning: Insecure world writable dir /usr/local in PATH, mode 040777

*** LOCAL GEMS ***

rails (2.3.5)
rake (0.8.7)
rdoc (2.5.3)

うおーい、railsだけかい!--include-dependencies を付けて実行してみても同じなので、dependしているgemを全部指定する。

$ gem dependency rails -r
Gem rails-2.3.5
  actionmailer (= 2.3.5, runtime)
  actionpack (= 2.3.5, runtime)
  activerecord (= 2.3.5, runtime)
  activeresource (= 2.3.5, runtime)
  activesupport (= 2.3.5, runtime)
  rake (>= 0.8.3, runtime)

あーこいつらがそれぞれ依存関係にあるものを調べるのは面倒だなー、gem dependency -rが遅いし。

なので、1.8.7で入れて同じgemを指定する

$ rvm 1.8.7
$ gem install rails --no-ri --no-rdoc
$ gem list

*** LOCAL GEMS ***

actionmailer (2.3.5)
actionpack (2.3.5)
activerecord (2.3.5)
activeresource (2.3.5)
activesupport (2.3.5)
rack (1.0.1)
rails (2.3.5)
rake (0.8.7)
rdoc (2.5.3)


んで、1.8.7以外にこれらをインストール

$ rvm 1.8.6,1.9.1,jruby gem install actionmailer actionpack activerecord activeresource activesupport rack rails
ruby-1.8.6-p399: ruby 1.8.6 (2010-02-05 patchlevel 399) [i686-darwin10.3.0] 
actionmailer  is not installed, installing...
actionmailer  installed.
ruby-1.9.1-p378: ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.3.0] 
actionmailer  is not installed, installing...
actionmailer  installed.
jruby-1.5.0.RC1: jruby 1.5.0.RC1 (ruby 1.8.7 patchlevel 249) (2010-04-14 0b08bc7) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_17) [x86_64-java] 
actionmailer  is not installed, installing...
actionmailer  installed.
$

これで終わりかーい!でも一応確認してみる。あ、入ってる。最初のgemの名前しか出てこないらしい。


rspecjsonも入れておく

$ rvm gem install rspec json --no-ri --no-rdoc

jrubyでは怒られるので、別途インストール

$ rvm jruby
$ gem install json-jruby

あ、jrubyにはrakeも入ってなかった。

$ gem install rake


Railsプロジェクトのディレクトリに移動して、必要なgemを一気にインストール

$ cd path/to/project
$ rvm rake gems:install

1.9.1ではtest-unit 1.2.3が必要らしいので、入れてみる

$ rvm 1.9.1
$ gem install test-unit -v 1.2.3
Successfully installed json_pure-1.2.4
Successfully installed rubyforge-2.0.4
Successfully installed hoe-2.6.0
Successfully installed test-unit-1.2.3
$ rake gems:install

色々いるのねー。

rspec-railsを入れてなかった

$ rvm gem install rspec-rails

sqlite3のdbはあるので、rake specを実行

$ rvm rake spec

あ、sqlite3のgemがなかった。

$ rvm gem install sqlite3-ruby

jrubyだとactiverecord-jdbcsqlite3-adapterが必要だった

$ rvm jruby
$ gem install activerecord-jdbcsqlite3-adapter

jdbcsqlite3を使うとなると、config/database.ymlのadapterを変えないといけないので、config/database.ymlを以下のようにする。

<% if RUBY_PLATFORM =~ /java/ %>
common: &common
  adapter: jdbcsqlite3
  pool: 5
  timeout: 5000
<% else %>
common: &common
  adapter: sqlite3
  pool: 5
  timeout: 5000
<% end %>

development:
  <<: *common
  database: db/development.sqlite3
test:
  <<: *common
  database: db/test.sqlite3
production:
  <<: *common
  database: db/production.sqlite3


これでやっとこ準備オッケー。

$ rvm rake spec

で、それぞれの環境でrake specが動くようになりました。

感想

rake gems:install が一発でいけるのは素晴らしいんだけど、rvm gem install でdependencyが無視されちゃうのはちょっとなー。
あと、やっぱりgemのインストールは時間がかかる。bundlerを使えばいいのか?