2007年6月12日 星期二

Ruby on Rails 與 Oracle


前言


承接之前撰寫的Oracle Installation Guide,這裡要開始解釋要如何使用Ruby如何連到Oracle。
雖然Oracle支援標準SQL規格,不過還是有相當多他們自己的概念。本文章描述幾個Oracle新手會遇到的問題。

若要詳細管理你的資料庫(10gR2),請參考
http://www.oracle.com/pls/db102/homepage
或是書籍

Oracle Database 10g DBA 技術手冊
http://www.books.com.tw/exep/prod/booksfile.php?item=0010303350

Oracle Database 10g Linux 系統管理專家http://www.books.com.tw/exep/prod/booksfile.php?item=0010333657

連接方式


Oracle提供幾種連接方式,不管你使用任何一種Client,你都必須給一個連線字串(Connection Identifier)。這個連線字串可以是以下幾種命名

  • Local Naming:你必須利用netca工具程式註冊這個命名,設定為使用TCP/IP連到特定主機的特定服務。你的連線字串應該會很短,像是db1,test,orcl等。

  • Directory Naming:設定Client會向目錄服務伺服器解析命名,你的連線字串會像是domain name如db1.west.acme.com, test.somewhere.mycompany.com 等。請注意這並不是連線到internet上的FQDN(Full Qualified Domain Name),而是一個如LDAP目錄服務的字串。

  • Easy Naming:這個是最簡單的方式,你只需要知道主機名稱和服務(Instance Name)即可,格式是hostname/service。例如database.mymachine.idv.tw/db1, database.mymachine.idv.tw:9999/test等。


Ruby


本文僅會介紹到在Windows上利用ruby oci8 直接連線,以及Ruby on rails資料庫設定檔的撰寫方式。

安裝Windows Instant Client


請到http://www.oracle.com/technology/software/products/database/oracle10g/index.html
點選Windows,你可能會需要有Oracle的帳號,接著下載 Oracle Database 10g Client Release 2 (10.2.0.1.0)。執行setup。

oracle_win_1.PNG建議你安裝管理員套件,他會將所有應用程式都裝進去,但如果你確定只是要寫程式,可以安裝InstantClient。

http://rubyforge.org/frs/?group_id=256&release_id=6553
下載ruby-oci8-0.1.16-mswin32.rb,預設存放在C:\

接著開啟命令提示字元

[code]
C:\>ruby ruby-oci8-0.1.16-mswin32.rb
[/code]
官方網頁在
http://www.jiubao.org/ruby-oci8/
有API的說明

連線


[ruby]
require 'oci8'
conn = OCI8.new('scott', 'tiger','db')
num_rows = conn.exec('SELECT * FROM emp') do |r|
puts r.join(',')
end
puts num_rows.to_s + ' rows were processed.'
conn.logoff
[/ruby]

這樣就完成一個最簡單的連線並且查詢了。

Ruby on Rails


可以不用database選項。
[code]
development:
adapter: oci
#database: db
username: dbadmin
password: dbadmin
host: db
[/code]

啟動Radrails IDE,利用Generator產生Scaffold。

oracle_win_2.PNG
利用Server tab啟動Server

oracle_win_3.PNG

接著進行測試

打開瀏覽器,輸入http://localhost:3001/auth_users 如果看見畫面就表示成功

oracle_win_4.PNG

沒有留言 :

張貼留言