rbenv + passenger のアップデートは要注意

なんか何回やっても rake-0.10.2 なんてねーよ!って怒られてて、本番環境が稼働してなかった。

原因としては、rbenv の ruby だけバージョンあげてて、passenger で利用する ruby の環境をアップデートしてなかったから。

元々 1.9.3-p286 で passenger をインストールしてたから、利用されるバイナリの設定は下記のように apache の conf に記述してた。

   LoadModule passenger_module /usr/local/rbenv/versions/1.9.3-p286/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/rbenv/versions/1.9.3-p286/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
   PassengerRuby /usr/local/rbenv/versions/1.9.3-p286/bin/ruby

しかし、これが 1.9.3-p327 にあがると、下記のように記述しなきゃいけない。

   LoadModule passenger_module /usr/local/rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
   PassengerRuby /usr/local/rbenv/versions/1.9.3-p327/bin/ruby

はじめは動くんだけど、上の rake みたいに、元々は 0.9.2 使っててそれがバージョンアップしたらそこのパスにインストールされていないのでエラーが起こっちゃう。

rbenv で ruby をアップデートする際は、下記のようにするといいと思う。

$ ruby-build install
$ rbenv install new-ruby
$ rbenv global new-ruby
$ rbenv rehash
$ gem install  passenger --no-ri --no-rdoc
$ export PATH=/usr/local/apache2/bin:$PATH # httpd-devel が必要なのでパスを通しておく
$ passenger-install-apache2-module
# ここで上記のような設定に必要なものが出てくるので、それを apache の conf ファイルに記述。

$ /etc/init.d/httpd restart

ハマった・・・