我的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 更改为本地 ifRails.env.test?
但是,这是行不通的。我想知道 rake 任务是否知道它被调用的环境,结果证明它不是。我把它放在我的seeds.rb 文件的顶部:
puts "Environment Check: Rails Environment = #{Rails.env}"
果然,当任务运行时打印:Environment Check: Rails Environment = development
那么,我怎样才能重做这个 rake 任务,以便当它播种测试数据库时它知道它正在播种测试数据库?