我有一批按顺序运行的 rake 任务:
task :batch_tasks => :environment do
Rake::Task["db:drop"].execute
Rake::Task["db:create"].execute
Rake::Task["db:migrate"].execute
Rake::Task["db:seed"].execute
Rake::Task["db:test:prepare"].execute
Rake::Task["custom_task_1"].execute
end
这是 custom_task_1 中的内容:
task :custom_task_1 => :environment do
puts "begin custom task"
orders = Order.all #three records
orders.each do |order|
puts "Do something to Order\n"
end
puts "end custom task"
end
当我运行上述批处理时,会发生以下情况:
rake batch_tasks
begin custom task
end custom task
但是,如果我在批处理之后运行自定义任务,则会发生以下情况:
rake custom_task_1
begin custom task
Do something to Order
Do something to Order
Do something to Order
end custom task
需要注意的一点是,当我在rake batch_tasks
之后使用断点运行调试器时rake db:seed
,检查会eval Order.all
返回一个空数组[]
。但是,在所有 rake 任务完成后Order.all
立即有数据。
关于 rake db:seed 以及在下一个调用的任务中访问 ActiveRecord 数据,我缺少什么?