Ruby on Rails2.2でoracle(10g)を使用する(も上手くいかず)

これに関してはいろいろなサイト、Blogで紹介されているので楽勝だと思ったのだが...

  • 前提
    • Ruby1.8.7(mswin32)がインストールされている
    • Rails 2.2がインストールされている
    • Oracle 10g Database Client for Windowsがインストールされている
  • 手順
    • 1. ruby-oci8をインストールする

Windowsなんで、ruby-oci8-1.0.4-i386-mswin32.gemをダウンロードして適当なディレクトリ($RUBY_HOME等)に置いてインストールする。

gem install ruby-oci8 --local

問題無し。

    • 2. ruby-oci8の接続テストをする
E:\ruby>irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'oci8'
=> true
irb(main):003:0> con = OCI8.new("scott", "tiger")
=> #, nil, 65535], @svc=#, @priv
ilege=nil, @prefetch_rows=nil>
irb(main):004:0> con.exec('select * from DUAL') do |r| puts r.join(', '); end
X
=> 1
irb(main):005:0>

これも問題無し

    • 3. Rails対象プロジェクトのdatabase.ymlを修正する
development:
  adapter: oracle
  encoding: utf8
  database: データベース名
  pool: 5
  username: ユーザ名
  password: パスワード

これで使えるようになるものだとばかり思ったのだが、試しにデータベーススキーマのダンプを取ろうとすると

>rake environment RAILS_ENV=development db:schema:dump
rake aborted!
Please install the oracle adapter: `gem install activerecord-oracle-adapter` (no such file to lo
ad -- active_record/connection_adapters/oracle_adapter)

と怒られる。

どうやらRails 2.xからはoracle用のActiveRecordアダプタ(AbstractAdapterのコンクリートクラス)は配布されていないらしい。
Rails 2.0.1 RC2 - activerecord-oracle-adapter not found - Ruby Forum
この記事には、わざわざ配布されなくなった"activerecord-oracle-adapter"へのリンクも書かれているのだが、

http://svn.rubyonrails.org/rails/adapters/oracle/lib/active_record/connection_adapters/

接続するとこの頁は無いと怒られてしまう。
gems.rubyforgeで探してみたがactiverecord-oracle_enhanced-adapterなるものはあるのだが、肝心のoracle-adapterは無いし、ひょっとしてこのgemで置き換えられたのかと思い、とりあえずこれをインストールしてみたのだが、

gem install activerecord-oracle-adapter --local

やはりactiverecord-oracle-adapterが無いぞと怒られてしまった。
恐らくたった一つのスクリプト(oracle_adapter.rb)が無いだけだと思うんだけど、上手くいかん。
ちょっと横道?に逸れるといつもこんなんだなぁ。

参考URL
Oracle in Ruby on Rails - rubyonrails.com
HowtoConnectToOracle in Ruby on Rails -
ruby-oci8 - トップページ
Ruby on Rails with Oracle FAQ - oracle.com