Rake-задача, которая потребляет много зависаний данных - PullRequest
0 голосов
/ 24 февраля 2010

У меня есть простая задача грабли, которая потребляет много данных через ActiveRecord. (у контактов ~ 47 тыс. строк)

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

Когда я запускаю эту задачу, обновляется 400 строк, а затем задача застревает. Нет ошибок и нет активности базы данных вообще ...

Как мне сделать это правильно?

1 Ответ

0 голосов
/ 24 февраля 2010

Это именно то, для чего предназначен find_in_batches. Это исключит огромное количество объектов ActiveRecord в памяти одновременно.

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

...