seri::diary

プログラミングのこととかポエムとか

RubyとRailsのバージョンをrvmで管理する

色々あってRailsの勉強してる。仕事以外だけど。
まだ具体的な開発には入っていないが、久しぶりのrails環境構築でハマりまくって大変なことになったので
必要最低限のところだけメモ。

対象バージョン

今回rvmでインストールして管理するのは下記のバージョン

ホントはRails4 beta0を使いたかったのだがいろんな事情(herokuが対応してないとか)で断念

rvmでruby1.9.3をインストールする

#まずrvmを更新。これやらないとハマる確率が2割ぐらい上がる
$ rvm get stable
$ rvm -v
rvm 1.19.6 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

#必要なパッケージ類をインストールする。これをしないと、後続作業であれがない、これがないと怒られまくって大変なことになる
$ rvm pkg install openssl
$ rvm pkg install readline
$ rvm pkg install zlib
$ rvm install 1.9.3


上記で失敗する場合は~/.rvm/usrを消してから再度pkgをインストールしてみると上手くいくことがある。
自分の場合何度やってもrubyのコンパイル時にopensslが読み込まれず涙目になっていのだが、ダメもとで~/.rvm/usrを消したら上手くいった。

なお、opensslが組み込まれない場合、rubyのインストール時に下記のようにコンパイルオプション指定で要なパッケージのディレクトリを指定する方法が色々なサイトで紹介されていた。
しかし上記の手順でrvmで各種pkgがインストールされている場合は不要のようだった。
rvm管理外のopensslを使いたい時とかに使うオプションだと思われる。

$ rvm install ruby-head -C "--enable-shared=true,--with-opt-dir=/opt/local"


ちなみに、ruby2.0.0が使いたくなってruby2.0.0をrvmでインストールしたときにも似たような事態(opensslがrequireできない病)にハマって、
半日ぐらい四苦八苦した結果、以下のコマンドでうまくインストールできたログがkobitoに残ってたのでさらしておく

$ CC=clang rvm install 2.0.0 --skip-openssl --with-opt-dir="brew --prefix openssl"

因に各コマンドの意味はよくわからない。あとで調べてみる。


rvmでRailsをインストールする

rvmはrubyrailsのバージョンの組み合わせを"gemset"という単位で管理することができる。
例えば
ruby1.8.7とrails3.1のgemset
ruby1.9.2とrails3.2のgemset
という具合に管理することができる。異なるrailsバージョンのアプリを同じPC内で開発しなくてはいけない場合等に効果を発揮しそうである。
そうえいばhome brewでもphpを複数バージョン管理できるが、phpの複数バージョン同居はそこまで苦痛ではないのでいまいち恩恵を感じなかった。
しかし今回railsの環境構築で相当痛い目を見た私としては、rvmのgemset管理機能が神に見える。

今回は上記でインストールしたruby1.9.3とrails3.2.13を一つのgemsetとして管理する。

$ rvm gemset create rails32

#作ったgemset を使用する
$ rvm 1.9.3@rails32
#確認する
$ ruby -v
rruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin11.4.2]

$ gem install rails
$ rails -v
Rails 3.2.13

もし新しいバージョンのrailsが出て(というかもう4.0.0betaがあるけど)試したくなったら

$rvm gemset create rails40
$rvm 1.9.3@rails40
$gem install

とやれば試すことが出来る。

また、同一バージョンのrubyでgemsetだけ複数作成して一発で切り替えることもできる。
詳細はこちらのエントリーが非常に非常に詳しいので熟読させていただいた。
rvm 入門 … 複数バージョンの Ruby と Rails を混在させる


今回の作業で参考にした他のリンク
Macで環境を整えるための環境-homebrewとrvmとrubygems-
RVMのRuby環境にreadline,openssl,zlibなどのライブラリを追加インストールする
rvm.ioのopensslのquick fix



色々あったけどrvmはやっぱり便利。
次回からはRubyRailsや、はたまた侍ズムの山本さんにおすすめされているRubymineのエントリーがかければ良いと思う。


あと全然関係ないけどドミノ・ピザでピザ食った