Sha256: 53977490738089d0f6de78faca976196e9050438bd28c8e84265c66a9575a701
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 KB
Contents
require 'rake' namespace :scrub do desc "scrub all" task all: :environment do require 'highline/import' require 'term/ansicolor' require 'logger' require 'parallel' include Term::ANSIColor @logger = Logger.new($stdout) unless ENV["SKIP_CONFIRM"] == "true" answer = ask("Type SCRUB to continue.".red) unless answer == "SCRUB" puts "exiting ...".red exit end 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 relation = ar_class.scoped relation = relation.send(:scrubbable_scope) if ar_class.respond_to?(:scrubbable_scope) relation.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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
acts_as_scrubbable-0.0.9 | lib/acts_as_scrubbable/tasks.rb |
acts_as_scrubbable-0.0.8 | lib/acts_as_scrubbable/tasks.rb |