В настоящее время я пытаюсь выполнить некоторые тесты в приложении 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