Rails: Сообщите этой задаче rake, что она находится в тестовой среде

У меня есть следующая задача rake, определенная в моей папке lib / tasks :

namespace :db do
  namespace :test do
    task :prepare => :environment do
      Rake::Task["db:seed"].invoke
    end
  end
end

Теперь, что это делает, это заполняет тестовую базу данных, когда я запускаю rake db : test: prepare . Я делаю это, потому что у меня есть некоторые базовые записи, которые должны существовать для того, чтобы приложение работало, поэтому они не являются необязательными и их нельзя высмеивать.

Отдельно у меня есть модель, которая использует S3 для хранения активов в разработка и производство, но я не хочу, чтобы он использовал S3 для тестирования. Я установил в модели метод, который изменяет путь хранения с S3 на локальный if Rails.env.test?

Однако это не работает. Мне было интересно, знает ли задача rake о том, из какой среды она вызывается, и оказалось, что это НЕ. Я помещаю это в начало моего файла seed.rb:

puts "Environment Check: Rails Environment = #{Rails.env}"

Конечно же, когда задача запускается, это печатает: Проверка среды: Rails Environment = development

Итак, как я могу повторить эту задачу с граблями, чтобы при заполнении тестовой БД он знал, что заполняет тестовую БД ??

16
задан Andrew 2 April 2011 в 20:48
поделиться