Rubyを最新版にしようとしたら、rbenv(複数のバージョンのRubyを管理するツール)でエラーが発生。rbenv installコマンドが実行できません。いろいろ調べてみたのですが、原因不明です。
そこで、apt-getコマンドでrbenvとrubyをいったん削除。GitHubから最新版のrbenvのダウンロードからやり直して、Ruby on Railsを再構築することにしました。
最新版のrbenvのダウンロード
gitコマンドで最新版のrbenvをダウンロードします。
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
インストールが完了したら、ホームディレクトリの.profileファイルにパスや初期化コマンドなどを書き込んでおきます。
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
echo 'eval "$(rbenv init -)"' >> ~/.profile
zshを使っている場合は、上記のコマンド中の~/.profileを~/.zshrcなどに置き換えて実行します。シェルを再起動させると、設定が反映されます。
exec $SHELL -l
続いて、ruby-buildのインストール。このツールは、rbenv installコマンドの実行時に自動的に呼び出されることになっているので、インストールは必須です。
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
Rubyのインストール
例えばRubyの最新版が1.9.3-p362で、このバージョンをインストールしたい場合、コマンドは次のようになります。Ruby on Railsのインストールにzlibやlibsslが必要なので、Rubyのコンパイルの前にインストールしておきます。
sudo apt-get install zlib1g-dev libssl-dev
rbenv install 1.9.3-p362
このバージョンをRuby on Railsで利用することになるので、globalの設定もここで行っておきます。
rbenv global 1.9.3-p362
rbenv rehash
最後に、rubyコマンドに-vオプションをつけて実行。Rubyのバージョンが正しく表示されているかどうか確認しておきます。
ruby -v
ruby 1.9.3-p362 (2012-12-25 revision 38607) [x86_64-linux]
Ruby on Railsのインストールと設定
UbuntuのリポジトリからインストールしたRuby on Railsをいったん削除。RubyGemsを使って最新版のRailsを再インストールします。
gem install -r rails
インストールの途中や最後に、file ‘lib’ not というメッセージが出る場合は、RubyGemsでRDocをインストールしておきます。
gem install rdoc
下記のコマンドで、最新バージョンのRuby on Railsがインストールされたかどうかを確認します。
rails -v
最後に、Ruby on Railsで作ったWebアプリが正常に動作するかどうかのテストしておきます。ホームフォルダ内にrailsappフォルダを作り、そこにtestという名前でテスト用のWebアプリを作ります。
mkdir railsapp
cd railsapp
rails new test
なお、RailsのデフォルトのデータベースはSQLite3(昔はMySQLがデフォルトでした)なので、SQLite3と関連ライブラリがインストールされていないとエラーとなります。エラーが発生した場合は、次のコマンドを実行します。
sudo apt-get install sqlite3 libsqlite3-dev
bundle install
エラー発生もなく、無事にrailsappフォルダ内にtestというフォルダができたら、このフォルダに移動して、サーバーを起動します。
cd test
rails server
もし、ここでエラーが発生したなら、メッセージをよく読んで対処します。今回の場合、Javascript RuntimeとExecjsがないというメッセージだったので、testフォルダの中のGemfileをテキストエディタで開き、18行目あたりにある、下記の行の#マークを削除しました。
# gem 'therubyracer', :platforms => :ruby
続いて、行末に次の一行を追加。
gem 'execjs'
編集が終わったら保存して、次のコマンドを実行します。
bundle install
バンドルのインストールが完了したら、もう一度rails serverコマンドを実行して、ブラウザ上からhttp://localhost:3000にアクセス。お馴染みのページが表示されていたら、サーバーは無事に立ち上がったということになります。
rbenvを使わないシンプルな方法
複数のバージョンのRubyを切り替えて使う必要がない場合は、rbenvを使わず、Ruby公式ページからソースファイルをダウンロードして、展開後に、makeコマンドでコンパイルしてインストールするという方法もあります。
ダウンロードした展開しソースファイル(tar.bz2形式の場合)を/usr/local/srcに展開し、コンパイル後、/usr/local以下にインストールします。コマンドラインの流れは次のとおりです。
なお、Rubyをコンパイルするためには、LibYAMLというライブラリが必要なので、予め公式サイトから最新版をダウンロードしておきます。
sudo tar zxvf yaml-0.14.tar.gz -C /usr/local/src
sudo tar jxvf ruby-1.9.3-p362.tar.bz2 -C /usr/local/src
cd /usr/local/src/yaml-0.14
./configure -prefix=/usr/local
make
make install
cd /usr/local/src/ruby-1.9.3-p362
./configure -prefix=/usr/local
make
make install
ここから先は、前述のとおり、すべてRubyGemsがやってくれます。複数のRubyのバージョンを管理するツールとしては、RVMもあります。