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の名前しか出てこないらしい。
$ 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
色々いるのねー。
$ 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を使えばいいのか?