UbuntuにRuby on Railsを再構築【rbenv編】

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もあります。

タイトルとURLをコピーしました