我有一個批次的運行順序rake任務:自定義rake任務無法在rake數據庫任務後立即訪問ActiveRecord數據?
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
檢查返回一個空數組[]
。但Order.all
在之後確實有數據所有的rake任務都完成了。
我錯過了關於rake db:種子並有權訪問下一個任務中的ActiveRecord數據的情況?
在這種情況下,rake db:seed會不會失敗?它成功了,隨後的rake任務由於某種原因而無法訪問數據。 – wrburgess
發現問題...您的答案不是解決方案,但它確實導致我以不同的方式篡改代碼。 – wrburgess