トップ > 技術メモ (システム管理) >

Ruby on RailsでOracleデータベースにアクセス

(2006.12.19作成; 2007.6.17新規公開。)

私は普段、Ruby on Rails (RoR) ではPostgreSQLかMySQLをデータベース (RDBMS) として使っていますが、Oracle内のデータにアクセスする必要があったので、その手順を簡単にまとめてみました。

ちょっとアクセスするだけなので、Windows (Cygwin) でRailsを動かし、別の機械で動くOracle 9i Release 2 (9.2) サーバにアクセスできるようにします。パフォーマンスについては考えません。

インストール

まずはOracle Databaseにアクセスするためのネイティブライブラリをインストールします。Oracleのサイトはだだっ広くて探しにくいですが、Instant Clientを入れればいいでしょう。

いずれもダウンロードにはユーザ登録が必要。パッケージはBasicとSDKの二つで足りる。

次はRubyバインディングです。

Windows用のバイナリ版も用意されていますが、今回はCygwinなので、自分でコンパイルします。

Ruby/OCIのREADMEに沿ってコンパイル、インストールすれば大丈夫です。

$ ruby setup.rb config -- --with-instant-client=/opt/instantclient_10_2
$ make
$ su
# make install

setup.rb configの直後の--は誤りではありません。書き間違いかと思って省略するとエラーになります。(なりました。)

設定

(2007.8.23 追記。)

TNSNAMES.ORA ファイルを作成し、所定の場所に置きます。このファイルでデータベースサーバのIPアドレス、ポートを指定します。

あとは、railsアプリケーションのconfig/database.ymlで、次のように設定すればOK。

development:
  adapter: oracle
  database: hogehoge
  username: hogehoge
  password: hogehoge

TNSNAMES.ORA ファイルを使わないときは、databaseオプションに「ホスト名 or IPアドレス/データベース名」と書きます。例えば、

  database: 192.168.11.11/oracleexample

環境変数

(2007.8.23 追記。)

クライアントの文字コードは、環境変数 NLS_LANG で設定します。設定した文字コードと違うと文字化けが起こります。私は最初、WindowsだとクライアントはシフトJIS決め打ちかと思っていました。

例えば、Linuxでクライアントの文字コードをUTF8にするには、次のようにします。

$ export NLS_LANG=japanese_japan.al32utf8

リンク

Oracle in Ruby on Rails [rubyonrails.com]
TNSNAMES.ORAを使わずに直接接続することもできる、らしい。
Ruby on Rails with Oracle FAQ [oracle.com]
Exploring Ruby on Rails (RoR)? This FAQ provides basic information about connecting to Oracle, installation, and creating Oracle Database XE + RoR applications.
Ruby on Rails on Oracle: A Simple Tutorial [oracle.com]
Rails is an easy framework to work with, but like any technology it takes time to master.

トップ > 技術メモ (システム管理) > Ruby on RailsでOracleデータベースにアクセス
このページについてのご感想・ご提案などをお寄せください。なお、コメントに「http:」、HTML aタグが含まれると送信されません。
評価: ◎ ← → ×
コメント:
お名前:
メールアドレス:
[Profile]  [Privacy Policy]  [Legal & Link]  [Site Map]  

banner Netsphere Laboratories http://www.nslabs.jp/

Copyright (c) HORIKAWA Hisashi. All rights reserved.

[PR]

はてなブックマークに追加  

サイト内検索:

[PR]