2010-11-18 22 views
2

我有一個公共模式的數據庫,我們保持登錄/帳戶信息和多個客戶端數據的客戶端模式。我已經成功地使用yaml_db將測試數據轉儲/加載到客戶端模式中,但這需要在每次我要重新加載數據時不斷修改公用模式和客戶端特定模式之間的schema_search_path。Rake - 在調用任務之前如何使用修改database.yml配置?

我想構建一個rake任務來自動執行此操作,但我不確定如何在調用db:data:load任務之前修改schema_search_path。

我可以在database.yml中做此查看當前值:

env = "#{RAILS_ENV}"
config = YAML::load(File.open('config/database.yml'))
puts config[env]["schema_search_path"]

但我不清楚如何修改要使用的值當我打電話

Rake::Task['db:data:load'].invoke

我試過只是分配一個新的值到

config[env]["schema_search_path"] = "test_data_schema"

,但不會出現工作

回答

2

想通了這一點 - 只需要建立與調用之前修改配置ActiveRecord的::基地連接。

ActiveRecord::Base.establish_connection(config[env]) Rake::Task['db:data:load'].invoke()