消耗许多数据的Rake任务冻结

时间:2010-02-24 16:01:40

标签: ruby-on-rails activerecord rake

我有一个简单的rake任务,它通过ActiveRecord消耗相当多的数据。 (联系人有~47k行)

Contact.all.each do |contact|
  contact.update_attribute ...
end

当我运行该任务时~400行得到更新然后任务卡住了。没有错误,也没有数据库活动...

如何正常运作?

1 个答案:

答案 0 :(得分:0)

这正是find_in_batches的用途。它将同时消除内存中的大量ActiveRecord对象。

http://ryandaigle.com/articles/2009/2/23/what-s-new-in-edge-rails-batched-find