У меня есть гем Rails 3, в котором есть некоторые грабли, которые нужно запускать только в тестовой среде.Работать в других средах не имеет смысла.
Моя проблема в том, что Rake загружает систему Rails, чтобы найти мои задачи в моем геме.Таким образом, к тому времени, когда он добирается до моих задач, Rails уже загружен в среду разработки (или любую среду, указанную пользователем).Это означает, что для правильного выполнения моих задач с граблями пользователь должен выполнить:
RAILS_ENV=test rake mytask
Поскольку моя задача имеет смысл только в «тестовой» среде, это раздражает, так как я бы предпочел, чтобы пользователь мог простотип:
rake mytask
Это похоже на то, как test: unit и test: функционалы автоматически предполагают среду тестирования, и пользователю не нужно указывать RAILS_ENV = test в командной строке.Итак, вопрос в том, как мне изменить мой тест, чтобы Rails переключился на тестовую среду?
Мой текущий обходной путь:
Rails.env = 'test'
ActionMailer::Base.delivery_method = :test
require Rails.root.join('test/test_helper')
Кажется, что это работает, но все еще регистрируется вlog / development.log, и я думаю, что он все еще работает с конфигурацией "development".У кого-нибудь есть идеи?Взгляд на то, как тестовые задачи определены в самом Rails, не показывает, как это сделать, что я вижу.
https://github.com/rails/rails/blob/master/railties/lib/rails/test_unit/testing.rake