その他
    ホーム技術発信DoRubyFreeBSD に任意バージョンの Ruby on Rails を導入する

    FreeBSD に任意バージョンの Ruby on Rails を導入する

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    よしだです。

    今回は FreeBSD に任意バージョンの Ruby + Ruby on Rails を導入する方法を紹介します。

     概要

    FreeBSD ではソフトウェアのインストールに Ports Collection というシステムを利用します。

    このシステムを利用して Ruby + Ruby on Rails をインストールすると、デフォルトでは Ruby 1.8 と Rails 3.2 が入ります(FreeBSD 8.3 の場合)。ところが、Ruby や Ruby on Rails はバージョンによってかなり挙動が違ってきます。特定のバージョンをインストールしたいというシーンは少なからずあると思います。

    そこで今回は、FreeBSD の Ports Collection を利用して、簡単に任意バージョンの Ruby + Ruby on Rails を導入する方法を紹介します。

     導入手順

    0. Ports Collection をインストールする

    FreeBSD インストール直後で Ports Collection の導入が済んでいない場合は、root ユーザで下記のコマンドでインストールします。

    # portsnap fetch
    # portsnap extract
    

    これで /usr/ports 以下に、各ソフトウェアのインストールに必要なファイルがまとめられたディレクトリ(このまとまりをスケルトンといいます)がカテゴリ分けされた状態で配備されます。

    1. 任意バージョンの Ruby をインストールするための準備

    Ports Collection からは Ruby 1.8 か Ruby 1.9 を導入することができます。

    Ruby に依存するソフトウェを導入する際に、デフォルトでは Ruby 1.8 がインストールされます。

    ここで Ruby 1.9 をインストールしたい場合は、/etc/make.conf に Ruby 1.9 を利用することを明示することで実現できます。

    # echo 'RUBY_DEFAULT_VER=1.9' >> /etc/make.conf
    

    どちらのバージョンを導入するにしても、Ruby 自体のインストールを明示的に行う必要はなく、Ruby が必要になったときに Ports Collection が自動で導入してくれます。便利ですね。

    2. RubyGems をインストールする

    まずは Ruby on Rails に必要不可欠であるプラグインシステム、RubyGems をインストールします。

    RubyGems はさまざまなプラグインの管理を行う一方で、Ruby on Rails のインストールまで行えるという優れものです。FreeBSD には、この RubyGems を最小限構成で導入するための port スケルトンが用意されています。

    今回はこれを利用することで導入にかかる時間の短縮を図ります。

    # cd /usr/ports/www/rubygem-rails-app-installer
    # make config-recursive
    (インストール時の設定を、依存ソフトウェア分もあわせて先に済ませてしまう)
    # make install clean
    (ここで Ruby とその他の必要なソフトウェアがインストールされる)
    

    ここでのポイントは、インストール前に「make config-recursive」というコマンドを実行することです。

    このコマンドはソフトウェアに必要な設定を、依存するソフトウェアの分も含めて、あらかじめ行うことができます。こうすることで、ソフトウェアごとに設定ダイアログが出現し、インストール作業が中断されるのを防ぐことができます。

    3. 任意バージョンの RubyGems をインストールする

    (この手順は、必要がなければ飛ばしてもかまいません)

    RubyGems にもバージョンがあり、環境によっては特定バージョンの導入が必要なケースもあります。

    FreeBSD 上には、バージョンごとの RubyGems の port スケルトンは存在しません。

    そこで下記のように、RubyGems 自身の機能を利用してアップグレードもしくはダウングレードさせます。

    # rehash
    (先ほど gem コマンドが入ったばかりなので、csh の場合、PATH の再読み込みが必要)
    # gem install rubygems-update -v=<インストールしたいバージョンの番号>
    # rehash
    (先ほどのコマンドで update_rubygems コマンドが入ったばかりなので、同上)
    # update_rubygems
    

    4. 任意バージョンの Ruby on Rails をインストールする

    ここまでの手順で Ruby on Rails を導入するための準備は整いました。

    Ruby on Rails は RubyGems を利用することで、簡単に導入することができます。

    # gem install -v=<インストールしたいバージョンの番号> rails
    

    とっても簡単ですね。

     おわりに

    今回は FreeBSD 8.3 での利用を例に、任意バージョンの Ruby + Ruby on Rails を導入する方法を紹介しました。

    次回はこの手順を利用して、Ruby on Rails 2.3 という少し古いシステムが必要になる『エレコマ』を、FreeBSD に導入する方法を紹介したいと思います。