diff options
| -rw-r--r-- | lib/tasks/referential.rake | 28 | 
1 files changed, 17 insertions, 11 deletions
| diff --git a/lib/tasks/referential.rake b/lib/tasks/referential.rake index b3202035b..2e1683208 100644 --- a/lib/tasks/referential.rake +++ b/lib/tasks/referential.rake @@ -82,30 +82,36 @@ namespace :referential do          print "⎯"*(80-head.size)          print "  "          count = klass.count -        klass.find_each do |o| -          o.update_checksum! -          if j%10 == 0 -            out = "#{"\b"*prev_size}\e[33m#{thing[i]}\e[0m (#{j}/#{count})" -            prev_size = out.size - prev_size - 9 -            print out -            i = (i+1) % thing.size +        klass.cache do +          klass.find_in_batches(batch_size: 500) do |batch| +            klass.transaction do +              batch.each do |o| +                o.update_checksum! +                if j%10 == 0 +                  out = "#{"\b"*prev_size}\e[33m#{thing[i]}\e[0m (#{j}/#{count})" +                  prev_size = out.size - prev_size - 9 +                  print out +                  i = (i+1) % thing.size +                end +                j += 1 +              end +            end            end -          j += 1          end +          print "#{"\b"*prev_size}\e[32m✓\e[0m (#{count}/#{count})\n"        end      end    end    desc 'Update all the checksums in the given referential' -  task :update_checksums_in_referential, [:slug] => :environment do |t, args| -    referential = Referential.find_by_slug(args[:slug]) +  task :update_checksums_in_referential, [:id] => :environment do |t, args| +    referential = Referential.find(args[:id])      update_checksums_for_referential referential    end    desc 'Update all the checksums in the given organisation'    task :update_checksums_in_organisation, [:organisation_id] => :environment do |t, args| -    thing = %w(\\ | / —)      Organisation.find(args[:organisation_id]).referentials.find_each do |referential|        update_checksums_for_referential referential      end | 
