Rails開発環境、Snow Leopardへアップグレードする方法

    後藤大地  [2009/09/01]

    Ruby on Rails

    Riding Rails: Upgrading to Snow LeopardにおいてMatt Aimonetti氏が、Mac OS X Snow Leopardにアップグレードした場合に、Ruby on Railsの環境もそれに合わせてアップグレードする必要があることを説明している。Snow Leopardではハードウェアが対応していれば64ビットモードでアプリケーションが動作するようになる。Rubyで開発されたライブラリやアプリケーションはこの影響を受けないが、Cエクステンションを32ビットモードのみでビルドした場合には、この部分が問題になる。

    紹介されているアップグレード手順は次のとおり。

    開発ツールのインストール

    Snow LeopardのDVDから"Optional Installs"を選択して、デフォルトオプションのまま"Xcode.mpkg"をインストール。

    Passengerインストール

    Passengerをインストールして、Apacheモジュールのコンパイルを実施する。/etc/apache2/httpd.confの該当するモジュール読み込み設定部分を編集。

    $ sudo gem install -r passenger
    $ sudo passenger-install-apache2-module
    PassengerのインストールとApacheモジュールのビルド
    
    LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so
    PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-2.2.4
    PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
    /etc/apache2/httpd.confファイルのモジュール読み込み部分を追加または編集
    

    MySQLインストール

    おかしな挙動を避けるあために64ビット版のMySQLへのアップグレードが強く推奨される。MySQLサーバが動作している場合は停止させ、MySQL 5.1 GA Downloadsから「Mac OS X 10.5 (x86_64)」をダウンロード。ディスクイメージを開いたら、デフォルトのオプションのまま、まず「mysql-5.1.37-osx10.5-x86_64.pkg」をインストール。次に、同じくデフォルトオプションのまま「MySQLStartupItem.pkg」をインストールし、さらに「MySQL.prefPane」をダブルクリック。選択を求められたら既存の設定パネルを置き換える方を選択するようにと説明がある。ここまで作業したらディスクイメージをアンマウントする。

    LeopardからSnow Leopardにアップグレードした場合、mysql gemが32ビットモードでコンパイルされているため、再ビルドの必要がある。しかしこの部分は若干状況が複雑だという。Snow Leopardにおいては、Cエクステンションをインストールする場合にはgemはi386 (32ビット)とx86_64 (64ビット)の両方のエクステンションをビルドしようとするものの、mysql.comから提供されているバイナリはユニバーサルではないためこの方法はうまくいかないという。64ビットモードのみをビルドするように次のように強制する必要があると説明されている。

    $ sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
    mysql gemを64ビットモードでビルドする方法
    

    なお、ほかのgemをビルドする場合にはARCHFLAGSは設定すべきではないという注意書きがある。

    MacPortsインストール

    MacPortsを使っている場合、Leopardでビルドされたライブラリを使っているのであればリコンパイルする必要がある。

    $ sudo port selfupdate
    $ sudo port sync
    $ sudo port upgrade --force installed
    MacPortsでインストールしたアプリケーションの更新
    

    なおRiding Rails: Upgrading to Snow Leopardでは説明されていないが、Snow LoepardにアップグレードすることでそもそもMacPortsが動作しなくなるケースもある。この場合、MacPortsとそこからインストールされたアプリケーションやライブラリをいったんすべて削除し、Snow Leopardに対応したMacPortsをインストールして、必要になるアプリやライブラリをすべてインストールしなおせばいい。

    ほかのgemをチェック

    Cエクステンションを使っているgemはリコンパイルの必要がある。gist: 178178 - GitHubのスクリプトを取得して、リコンパイルが必要になっているgemを正確に見付だし、それらをリコンパイルする。

    Snow LeopardにバンドルされているRubyはRuby 1.8.6ではなくRuby 1.8.7へアップグレードされている。しかしこれは問題にならないという。Ruby on Railsはすでに長いことRuby 1.8.7で動作している。

    関連記事

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン