どうせ勉強するなら最新の rails 3 での挙動も並行して勉強したいところです。そもそも仮想ゲストOS上の環境なのでもう一つ作るっていうのもありなんですが、手間がかかりそうとかリソースが足りなさそうとか思うと、現在の環境に複数バージョンを共存させたくなってきました。
そんなこんなで調べていたら rvm (Ruby Version Manager)というのを見つけました。
インストール
基本的に以下の文書にしたがって(略http://beginrescueend.com/rvm/install/
まずは download & install :
これだけで /usr/local/rvm/ 以下にインストールが完了します。$ sudo bash <<(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
また、インストールの際のログの中に
NOTE: To all Multi-User installers - DO NOT forget to add your users to the 'rvm' group.という注意がありました。「Linuxのグループをプロジェクトごとに使う」っていうポリシー自体は聞いたことがあったんですが、こういう形で使うのは初めてです。 ひとまず、自分のユーザを rvm グループに追加しました。
あと、「Rubyの最新版を入れるんだったら…が必要だよ」とたくさん yum のパッケージが列挙してあったので、必要になるか微妙だったんですが、足りていなかった libyaml-devel, libffi-devel をインストールしました。$ sudo usermod -a -G rvm kazu
Ruby 環境の作成
以下のページを参考にさせてもらいました。
http://www.machu.jp/diary/20110521.html
rvm では
- system (rvm の管理外のsystem標準の環境: OSパッケージのrubyやgems)
- rvm 以下に複数のバージョンの ruby
- 各rubyのバージョン以下に(独立した)複数の gemset
とりあえず(1.9系の良さを知らないもので…)1.8系で満足ですが、この際 1.9 も用意しておこうと思います。ということで、rvm にて、
$ rvm install 1.8.7で1.8系および1.9系をインストールしておきます。
$ rvm install 1.9.2
(どんなバージョンが利用可能かは "rvm list known" で確認できます)
さて。
この状態だと、rvm管理下の 1.8.7 / 1.9.2 の2つの環境、およびOS標準(system)の合計3つの Ruby 環境があります。
これを切り替えるのには rvm use を使います。
1.8.7 環境に切り替える:
$ rvm use 1.8.7
元のシステム環境に戻す:
$ rvm use system
次は、"rvm use 1.8.7" を行った(一旦 rvm 環境下に入った)上で、gemset の作成に移ります。
$ rvm gemset create openskip作成したら rvm use コマンドで gemset を含めた指定を行います。
$ rvm gemset create rails3
$ rvm use 1.8.7@rails3ここで gem list コマンドを使ってみると空っぽの gem 環境になっていて、以前インストールした gem とは切り離されていることが分かるので、望みの gem を揃えていきます。
$ gem listこれで複数環境を使い分けられそうです。
*** LOCAL GEMS ***
$ gem install rails3
(追記: 2011/10/22)
openskip の環境を system じゃなくて ruby-1.8.7@openskip として作ったときに
/usr/local/rvm/gems/ruby-1.8.7-p352@openskip/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:55: uninitialized constant ActiveSupport::Dependencies::Mutex (NameError)というエラーに見舞われました。
エラーメッセージをググったら、特定の rails のバージョンと rubygems のバージョンとの組み合わせで起こるエラーのようです。
http://blog.digital-squad.net/article/196968134.html
rvm の ruby-1.8.7@openskip 環境で、
$ gem -v
1.8.10
$ gem update --system 1.3.7
ちなみに gem のバージョンは < 1.6 であればいいようなんですが、OS標準の gem と同じバージョンにしてみました。
0 件のコメント:
コメントを投稿