我輩はプログラマーである

アラフィフ プログラマーの日記

さくらVPSにrvmを用いてRails環境を構築しました


Redmineをインストールするために、さくらVPSRuby on Rails環境を構築します。

今後、複数のRailsのバージョンをインストールする可能性があるため、前回、rvmをインストールしました。

今日は、ここに書かれているスペックを元に、rvmを用いてRedmineが動作するRails 2.8.12をインストールします。

まず、前回やっていなかったことを実施(実は、これをやっていなかったから小一時間ハマった)。

# rvm pkg install zlib
# rvm pkg install openssl
# rvm pkg install readline
# rvm pkg install iconv
これでrvmの準備が整いましたので、本題です。

今回、参考にしたのはまちゅさんの記事です。
まず、インストールできるrubyのバージョンを確認
# rvm list known

そして、ruby1.8.7をインストール

# rvm install 1.8.--enable-shared  --with-openssl-dir=/usr/local/rvm/usr --with-readline-dir=/usr/local/rvm/usr --with-zlib-dir=/usr/local/rvm/usr

ついでに、ruby1.9.2もインスールしとく

# rvm install 1.9.2 --enable-shared  --with-openssl-dir=/usr/local/rvm/usr --with-readline-dir=/usr/local/rvm/usr --with-zlib-dir=/usr/local/rvm/usr

2つのrubyがインスールされていることを確認

# rvm list
rvm rubies
   ruby-1.9.2-p290 [ x86_64 ]
   ruby-1.8.7-p352 [ x86_64 ]

 rubyを切り替えてみる

# rvm use 1.8.7
Using /usr/local/rvm/gems/ruby-1.8.7-p352
# ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
# rvm use 1.9.2
Using /usr/local/rvm/gems/ruby-1.9.2-p290
# ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]

すげ〜。今回は、1.8.7を使うので、もう一度、rvm use 1.8.7を実行しておく。

次に、複数のrailsのバージョンに対応するために、gemsetを作る。今の状態は、こんな感じ。

# rvm gemset list
gemsets for ruby-1.8.7-p352 (found in /usr/local/rvm/gems/ruby-1.8.7-p352)
   global
globalは全てのgemsetで使われる共通ものらしい。さて、rails2.3.12用のgemsetを作る。
# rvm gemset create rails23

ここで、作られたか確認。

 # rvm gemset list
gemsets for ruby-1.8.7-p352 (found in /usr/local/rvm/gems/ruby-1.8.7-p352)
   global
   rails23

ruby1.8.7, rails2.3.12のgemsetに切り替える

# rvm 1.8.7@rails23

そして、rails2.3.12をインストールする。

# gem install rails -y -v 2.3.12  --no-ri --no-rdoc 

無事、インストール完了〜。

実は、rvmをインストール後に、zlibやreadlineを入れ忘れていたために、railsのインストールエラーで小一時間悩む(zlibがないというエラー。結局、ココココを見て理解)。その後、rails new apl を実行するとmd5のライブラリがないと怒られる。。。結局、RVMからインストールしなおして動くようになりました。ということで、%rvm notesを読まないと。。。はまる。

(参考) RVM削除

ところで、redmine.jpをみるとrails2.3.5を推奨しているようです。もしかしたら、rails2.3.5を入れ直すかもしれないけど、その時はgemsetを使えばイイしね〜 ;-p