我有以下任务:
namespace :db do
desc "Drop, create, migrate, seed the database and prepare the test database for rspec"
task :reset_db => :environment do
puts "Environment Check: Rails Environment = #{Rails.env}"
Rake::Task['db:drop'].invoke
Rake::Task['db:create'].invoke
Rake::Task['db:migrate'].invoke
#Rake::Task['db:fixtures:load'].invoke
Rake::Task['db:test:prepare'].invoke
puts 'Seeding Database..'
Rake::Task['db:seed'].invoke
end
end
此任务在最后一个
db:seed
之前都可以正常工作线。它似乎正在使用
test
环境并在那里创建数据,而所有其他任务在 development
中执行环境。当我执行 rake db:seed
通过命令行,它在 development
中正确运行环境。如何防止它在
test
中运行环境?
最佳答案
db:test:prepare
rake 任务准备测试数据库,因此设置 RAILS_ENV=test
.
所以你的任务在测试环境中运行的原因是因为db:test:prepare
实际上覆盖了您的 RAILS_ENV
多变的。
关于ruby-on-rails - 执行数据库 :seed task for development,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866760/