Sha256: fccba06e922046344ae5e4a0ceae6f71600e303584f1c23c037a641de9467f1b
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
require 'rake' namespace :scrub do desc "scrub all" task all: :environment do require 'highline/import' require 'term/ansicolor' require 'logger' require 'parallel' @logger = Logger.new($stdout) answer = ask("Type SCRUB to continue.".red) unless answer == "SCRUB" puts "exiting ...".red exit end @logger.warn "Scrubbing classes".red Rails.application.eager_load! # make sure all the classes are loaded @total_scrubbed = 0 ar_classes = ActiveRecord::Base.descendants.select{|d| d.scrubbable? }.sort_by{|d| d.to_s } Parallel.each(ar_classes) do |ar_class| # Removing any find or initialize callbacks from model ar_class.reset_callbacks(:initialize) ar_class.reset_callbacks(:find) @logger.info "Scrubbing #{ar_class} ...".green scrubbed_count = 0 ActiveRecord::Base.connection_pool.with_connection do ar_class.find_in_batches(batch_size: 1000) do |batch| ActiveRecord::Base.transaction do batch.each do |obj| obj.scrub! scrubbed_count += 1 end end end end @logger.info "#{scrubbed_count} #{ar_class} objects scrubbed".blue end @logger.info "Running after hook".red ActsAsScrubbable.execute_after_hook @logger.info "Scrub Complete!".white end end desc "Links to scrub:all" task :scrub => ['scrub:all']
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
acts_as_scrubbable-0.0.5 | lib/acts_as_scrubbable/tasks.rb |