Ruby on Rails+OracleでMigrationを行うためのセットアップ手順

RailsからOracleにつなぐときのメモ。
情報が少ないこともあって、意外と大変だった。

※2009/2/27 Linux用の記述追記等、いろいろ修正

環境

  • DB:Oracle10g Release2 Express Edition
  • サーバOS:CentOS5.2 ※仮想環境上に構築(192.168.0.11)
  • クライアントOS:WindowsXP SP3 or CentOS5.2

手順

Oracleクライアントモジュール

注意点:DBサーバをWindows上に構築した場合は、サーバとともにクライアントもインストールされるため本設定は必要ない。
Windows用や、Linux用Mac用と各種インストーラを発見。
特にMacLinuxではこちらを利用した方が吉。

1.OCNサイトからInstantClientPackageのBasicとSDKをダウンロード(OCNにユーザ登録する必要有り)
2.両方を解凍して任意のフォルダに配置

3.環境変数設定
Windows設定例

変数名 パス
ORACLE_HOME C:\oracle\instantclient_10_2
PATH C:\...;%ORACLE_HOME% ※最後にORACLE_HOMEを追記

Linux設定例
.bash_profileなどに以下を追記

export ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client
export PATH=${ORACLE_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}

4.環境変数適用

  • Windows:再起動
  • Linux:再ログイン or sourceコマンド
各種アダプタ設定

1.Ruby-OCI8インストール
※デフォルトではunstableの2.0系がインストールされてしまうため、安定版1.0系の指定が必須!

gem install ruby-oci8 -v=1.0.4

2.Oracleアダプタインストール

※2009/3/18 OracleEnhancedAdapterを使う方が良い。旧アダプタのメンテナもEnhancedに移った模様。

gem install activerecord-oracle-adapter --source http://gems.rubyonrails.org   

gem install activerecord-oracle_enhanced-adapter
Oracleサーバ設定

サーバの管理コンソールで、「ユーザ名:oracle、パスワード:oracle」のユーザを作成しておく。(OracleXEではOracleインスタンスは「xe」に固定される)

Rails設定

database.ymlを以下のように設定。

development:
  adapter: oracle_enhanced
  database: 192.168.0.11/xe ← IPアドレス+Oracleインスタンス名
  username: oracle
  password: oracle

これで無事Migrationが通った。