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