У меня в папке lib/tasks
определена следующая задача rake:
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 на локальный, если Rails.env.test?
Однако это не работает. Мне было интересно, знает ли задача rake о том, из какой среды она вызывается, и оказывается, что это НЕ. Я положил это в начало моего файла seed.rb:
puts "Environment Check: Rails Environment = #{Rails.env}"
Конечно, когда задача запускается, это печатает: Environment Check: Rails Environment = development
Итак, как я могу повторить эту задачу rake, чтобы при заполнении тестовой БД она знала, что она заполняет тестовую БД ??