3/15/2007

在 Rails 之外使用 ActiveRecord

今天要寫一個 cron script 要用到資料庫,因為已經被 Active Record 慣壞了,懶得用 SQL。所以就花點時間 Survey 怎麼再 Rails 之外使用 Active Record。


簡單版

1. require 相關的 lib

require "rubygems"
require "active_record"

2. 建立 DB Connection

ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:username => "root",
:host => "localhost",
:password => "secret",
:database => "plants_db"
)

3. 宣告 ActiveRecord Class

class MyClass < ActiveRecord::Base
end


如此就可以開始使用啦。不過如果遇到你必須一次操作多個 DB 的情況時,你可以用比較 Rails 一點的 Config 來寫作

加入 Config 的用法

1. require 相關的 lib

require "rubygems"
require  "active_record"



2. 撰寫 DB 設定檔 ,我們仿 Rails 寫一個 database.yml

development:
__adapter: mysql
__host: localhost
__username: root
__password:
__database: lala



3. 將設定檔讀進來,讀到一個 $config 變數

$config = YAML.load_file(File.join(File.dirname(__FILE__), 'database.yml'))



4. 宣告 ActiveRecord 物件,記得加上 establish_connection

class MyClass < ActiveRecord::Base
establish_connection $config[''development"]
end


5. 開始快快樂樂使用 ActiveRecord 吧

2 則留言:

Philip 提到...

建議

require "rubygems"
require_gem "activerecord"

改成

require "rubygems"
require "active_record"

因為 require_gem 已經被 obsolete 了.

BTW, 這樣也可以順便使用 active_support, 因為 require active_record 的時候就已經順便把 active_support require 進來了, 若只想用 active_support 的功能的話, require "active_support" 就 OK了 :)

thegiive 提到...

感謝:)
已經修正