как вызвать грабли: db: подготовить, что он также мигрирует соединение с внешней базой данных - PullRequest
1 голос
/ 28 февраля 2012

В настоящее время я пытаюсь выполнить некоторые тесты в приложении rails, которое имеет два подключения к базе данных. Поскольку, конечно, мне не хотелось бы удалять 2-ю базу данных каждый раз, когда я выполняю тестирование, я настроил механизм подключения к другой 2-й базе данных, если среда является «тестовой» (см. Ниже).

Мой вопрос: как я могу указать тесту rake также выполнить rake db:test:prepare на 2-й БД?

Этот запрос уже коснулся моей проблемы, но не смог помочь мне полностью.

Код для объяснения:

Мои классы ActiveRecord, которые подключаются ко 2-й базе данных, наследуются от следующего класса InformixConnect:

class InformixConnect < ActiveRecord::Base
  self.abstract_class = true
  case Rails.env
    when 'production', 'development'
      establish_connection :development_informix
    when 'test'
      establish_connection :test_informix_dummy
    else
      raise "Please specify a correct informix Environment."
  end

end

как

class RenewalNotify < InformixConnect

  set_table_name :renewal_notify
  set_primary_key :renewal_notify_id

end

(да, я знаю ... Схема не соответствует соглашениям о рельсах. Она унаследована)

database.yml содержит

...
development:
    adapter:    postgresql
    database:   rails_development
    host:   127.0.0.1
    reconnect: true
    username: rails
    password: guessone

...
development_informix:
  adapter: informix
  database: SOMETHING
  username: yyy
  password: yyy

test_informix_dummy:
  adapter: sqlite3
  database: db/test_informix_dummy.sqlite3
...

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test: &TEST
  adapter: sqlite3
  database: db/test.db
  verbosity: silent
  timeout: 5000

Так что мне нужно будет настраивать базу данных "test_informix_dummy" каждый раз, когда я выполняю rake test

...