У меня есть следующая задача 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
Итак, как я могу повторить эту задачу с граблями, чтобы при заполнении тестовой БД он знал, что заполняет тестовую БД ??