Rake - 如何在调用任务之前修改database.yml config?

时间:2010-11-18 03:32:12

标签: ruby-on-rails ruby-on-rails-3 rake yaml

我有一个带有公共架构的数据库,我们为客户端数据保留登录/帐户信息和多个客户端架构。我已成功使用yaml_db将测试数据转储/加载到客户端模式中,但这需要在每次我想重新加载数据时不断修改公共模式和客户端特定模式之间的schema_search_path。

我正在尝试构建一个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"

但似乎不起作用

1 个答案:

答案 0 :(得分:2)

想出这个 - 只需要在调用Rake任务之前与修改后的config建立ActiveRecord::Base连接:

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