【问题标题】:Rake - how to use to modify database.yml config prior to invoking task?Rake - 如何在调用任务之前使用修改 database.yml 配置?
【发布时间】:2011-05-11 19:39:22
【问题描述】:

我有一个带有公共架构的数据库,我们在其中保存登录/帐户信息以及用于客户端数据的多个客户端架构。我已成功使用 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"

分配一个新值

但这似乎不起作用

【问题讨论】:

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


    【解决方案1】:

    想通了 - 只需要在调用 Rake 任务之前使用修改后的配置建立 ActiveRecord::Base 连接:

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

    【讨论】:

      猜你喜欢
      • 2015-10-11
      • 2011-05-11
      • 2011-03-07
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多