Mac de Ruby on Rails - #5 - Oracleと遊ぶ #4 Tweet
まず、前回の復習。
前回は、rubyからruby-oci8さらにOracle Instant Client 10gを介してOracle11g R1 EE 11.1.0.6.0のデータベースへアクセスできることを確認した。
今回は、rubyからActiveRecordを利用してOracle11g R1のデータベースへアクセスできるか確認する。
バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2
Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3
コードは以下の通り。
pb17:˜ discus$
pb17:˜ discus$ cat test.rb
require 'rubygems'
require 'active_record'
class Emp < ActiveRecord::Base
set_table_name "EMP"
end
ActiveRecord::Base.establish_connection(
:adapter => "oracle",
:database => "lampeye",
:username => "scott",
:password => "tiger"
)
emp = Emp.find(:first,:conditions =>["ENAME = ?", "ほげ"])
puts "#{ emp.empno}, #{ emp.ename}, #{emp.job}, #{emp.hiredate}"
実行してみる!
pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ ruby test.rb
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:231
:in `establish_connection': Please install the oracle adapter: `gem install activerecord-oracle-adapter`
(no such file to load -- active_record/connection_adapters/oracle_adapter) (RuntimeError) from test.rb:8
あ〜〜なるほど、ActiveRecordからruby-oci8を利用するためには、oracle_adapter.rbが必要なんですね!
ということでoracle_adapter.rbをダウンロードし、/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters以下にコピーする。
pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ cd :/Volumes/Repository/temp
pb17:/Volumes/Repository/temp discus$ curl -O http://svn.rubyonrails.org/rails/adapters/oracle/lib/active_record/connection_adapters/oracle_adapter.rb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27596 100 27596 0 0 25998 0 0:00:01 0:00:01 --:--:-- 43123
pb17:/Volumes/Repository/temp discus$
pb17:/Volumes/Repository/temp discus$
pb17:/Volumes/Repository/temp discus$ sudo cp oracle_adapter.rb /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters
Password:
pb17:/Volumes/Repository/temp discus$
再度実行してみる!
pb17:/Volumes/Repository/temp discus$ cd
pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ ruby test.rb
9999, ほげ, ENGINEER, Tue Jan 01 00:00:00 +0900 2008
pb17:˜ discus$
お〜〜〜、上手くいった!〜〜。
今日はここまで、次回へつづく。
| 固定リンク | 0
コメント