Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
## Rails extension # AR extension to iterate over all records like a DB cursor # Prevents performance problems when iterating over a table with many rows # Usage: # User.find_all_in_chunks(1500) { |user| user.update_attribute :name, 'jim' } def self.find_all_in_chunks(size=1000) limit, offset, num_rows = size, 0, self.count while offset < num_rows do records = find :all, :limit => limit, :offset => offset offset += records.size records.each { |record| yield record } end end ## Crappy spec describe ActiveRecord::Base, "#find_all_in_chunks" do it "should iterate over records like a DB cursor" do rows, fetched = User.count, 0 User.find_all_in_chunks(2) do |user| fetched += 1 rows.should <= rows end end end
This paste will be private.
From the Design Piracy series on my blog: