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
ハマった・・・