CentOS 6.5 に rbenv を導入して Ruby のバージョンを上げる

ついに Ruby 1.8.7 のサポートが終了した。いままで CentOS 6.5 では Ruby 1.8.7 を使っていたので、これを最新版に変更しようと思う。簡単そうなので rbenv を使ってみようと思う。CentOSでrbenvをシステムにインストールする を参考に。

rbenv の /usr/local/ への導入

# cd /usr/local
# git clone https://github.com/sstephenson/rbenv.git rbenv
# git clone https://github.com/sstephenson/ruby-build.git rbenv/plugins/ruby-build
# vi /etc/profile.d/rbenv.sh 
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init --no-rehash -)
# source /etc/profile.d/rbenv.sh

最新版の Ruby の導入

# rbenv install 2.1.2
# rbenv global 2.1.2
# rbenv rehash
# ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
# rbenv exec gem install bundler --no-ri --no-rdoc
# rbenv rehash

これでだいたい導入は終了。しかし以下のような問題が残る。

現状: sudo bundle では /usr/bin/bundle が実行される。 bundle では /usr/local/rbenv 以下の bundle が実行される。

解決策:sudo bundle で実行されるバイナリを変更する / sudo したいときは常に su する

とりあえずは後者の解決策を採用する。

RedmineRuby 2.1.2 で動かす

ついでに Redmine を新しい Ruby で動かす設定もしよう。

# cd /var/lib/redmine
# gem install passenger --no-rdoc --no-ri
# rbenv rehash  
# passenger-install-apache2-module

出力された指示に従う。

# rake generate_secret_token
# rake db:migrate RAILS_ENV=production
# rake redmine:plugins:migrate RAILS_ENV=production
# rake tmp:cache:clear
# rake tmp:sessions:clear
# service httpd start

とにかく rehash することが重要。