class ActsAsScrubbable::TaskRunner

Attributes

ar_classes[R]

Public Class Methods

new() click to toggle source
# File lib/acts_as_scrubbable/task_runner.rb, line 11
def initialize
  @ar_classes = []
end

Public Instance Methods

after_hooks() click to toggle source
# File lib/acts_as_scrubbable/task_runner.rb, line 70
def after_hooks
  return if ENV["SKIP_AFTERHOOK"]

  ActsAsScrubbable.logger.info Term::ANSIColor.red("Running after hook")
  ActsAsScrubbable.execute_after_hook
end
before_hooks() click to toggle source
# File lib/acts_as_scrubbable/task_runner.rb, line 63
def before_hooks
  return if ENV["SKIP_BEFOREHOOK"]

  ActsAsScrubbable.logger.info Term::ANSIColor.red("Running before hook")
  ActsAsScrubbable.execute_before_hook
end
confirmed_configuration?() click to toggle source
# File lib/acts_as_scrubbable/task_runner.rb, line 24
def confirmed_configuration?
  db_host = ActiveRecord::Base.connection_db_config.host

  unless ENV["SKIP_CONFIRM"] == "true"
    answer = ask(Term::ANSIColor.red("Type '#{db_host}' to continue. \n") + Term::ANSIColor.white("-> "))
    unless answer == db_host
      ActsAsScrubbable.logger.error Term::ANSIColor.red("exiting ...")
      return false
    end
  end
  true
end
extract_ar_classes() click to toggle source
# File lib/acts_as_scrubbable/task_runner.rb, line 37
def extract_ar_classes
  Rails.application.eager_load! # make sure all the classes are loaded
  @ar_classes = ActiveRecord::Base.descendants.select { |d| d.scrubbable? }.sort_by { |d| d.to_s }

  if ENV["SCRUB_CLASSES"].present?
    class_list = ENV["SCRUB_CLASSES"].split(",")
    class_list = class_list.map { |_class_str| _class_str.constantize }
    @ar_classes = ar_classes & class_list
  end
end
prompt_db_configuration() click to toggle source
# File lib/acts_as_scrubbable/task_runner.rb, line 15
def prompt_db_configuration
  db_host = ActiveRecord::Base.connection_db_config.host
  db_name = ActiveRecord::Base.connection_db_config.database

  ActsAsScrubbable.logger.warn Term::ANSIColor.red("Please verify the information below to continue")
  ActsAsScrubbable.logger.warn Term::ANSIColor.red("Host: ") + Term::ANSIColor.white(" #{db_host}")
  ActsAsScrubbable.logger.warn Term::ANSIColor.red("Database: ") + Term::ANSIColor.white("#{db_name}")
end
scrub(num_of_batches: nil, skip_before_hooks: false, skip_after_hooks: false) click to toggle source
# File lib/acts_as_scrubbable/task_runner.rb, line 52
def scrub(num_of_batches: nil, skip_before_hooks: false, skip_after_hooks: false)
  before_hooks unless skip_before_hooks

  Parallel.each(ar_classes) do |ar_class|
    ActsAsScrubbable::ArClassProcessor.new(ar_class).process(num_of_batches)
  end
  ActiveRecord::Base.connection.verify! if ActiveRecord::Base.connection.respond_to?(:reconnect)

  after_hooks unless skip_after_hooks
end
set_ar_class(ar_class) click to toggle source
# File lib/acts_as_scrubbable/task_runner.rb, line 48
def set_ar_class(ar_class)
  ar_classes << ar_class
end