Грабли - как использовать для изменения конфигурации database.yml до вызова задачи? - PullRequest
2 голосов
/ 18 ноября 2010

У меня есть база данных с общедоступной схемой, в которой мы храним информацию о входе в систему / учетной записи и несколько схем клиента для данных клиента. Я успешно использовал yaml_db для выгрузки / загрузки тестовых данных в клиентскую схему, но это требует постоянного изменения schema_search_path между общедоступной схемой и конкретной клиентской программой каждый раз, когда я хочу перезагрузить данные.

Я пытаюсь создать задачу rake, чтобы автоматизировать это, но я не уверен, как изменить schema_search_path до вызова задачи db: data: load.

Я могу просмотреть текущие значения в 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 Ответ

2 голосов
/ 18 ноября 2010

Понял это - просто нужно установить соединение ActiveRecord::Base с измененным конфигом до вызова задачи Rake:

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