База данных набора на основе того, как приложение было запущено

У меня есть два приложения направляющих (позволяет, называют их APP-1 и APP-2), у каждого из них есть зависимость от третьего приложения направляющих (APP-3).

Я хотел бы смочь запустить тесты для APP-1 и APP-2 параллельно на моем сервере CI. Проблема, обе потребности запустить APP-3 и записать в DB через APP-3. Это вызывает конфликты и отказы, если тесты запущены параллельно.

Моя идея для решения для APP-1, и APP-2 каждому запускают их собственный экземпляр APP-3 и иметь каждую точку экземпляра к различному DB. Существует ли способ динамично установить DB в database.yml APP-3 так, чтобы он соединился с другим DB, в зависимости от которого APP запускает его?

К вашему сведению. APP-1 и APP-2 в настоящее время запускают APP-3 через задачи граблей.

1
задан AaronThomson 20 May 2010 в 01:33
поделиться

1 ответ

Создайте два файла database.yml для App-3. Назовите их database_A.yml и database_B.yml или как хотите.

В файле environment.rb для App-3 добавьте следующее в конец блока инициализатора.

Rails::Initializer.run do |config|
  # ...

  # Decide what database_FOO.yml file you care about.
  #
  db_config_file_name = "database_A.yml"  # Put your logic here for choosing which yml file you want.

  db_config_file_path = File.join("config", db_config_file_name)
  config.database_configuration_file = db_config_file_path if File.exists? db_config_file_path
end

Я взял это из своего блога, где описываю, как я использую другой файл database.yml при запуске приложения с JRuby. Концепция аналогична, так что, надеюсь, вы найдете это полезным. http://www.workingasintended.com/2010/05/03/choosing-a-different-rails-databaseyml-file-for-jruby/

2
ответ дан 3 September 2019 в 00:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: