在 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 吧
簡單版
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 則留言:
建議
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了 :)
感謝:)
已經修正
張貼留言