Class: ActsAsScrubbable::TaskRunner
- Inherits:
-
Object
- Object
- ActsAsScrubbable::TaskRunner
- Defined in:
- lib/acts_as_scrubbable/task_runner.rb
Instance Method Summary collapse
- #after_hooks ⇒ Object
- #before_hooks ⇒ Object
- #confirmed_configuration? ⇒ Boolean
- #extract_ar_classes ⇒ Object
-
#initialize ⇒ TaskRunner
constructor
A new instance of TaskRunner.
- #prompt_db_configuration ⇒ Object
- #scrub(num_of_batches: nil, skip_before_hooks: false, skip_after_hooks: false) ⇒ Object
- #set_ar_class(ar_class) ⇒ Object
Constructor Details
#initialize ⇒ TaskRunner
Returns a new instance of TaskRunner.
11 12 13 |
# File 'lib/acts_as_scrubbable/task_runner.rb', line 11 def initialize @ar_classes = [] end |
Instance Method Details
#after_hooks ⇒ Object
70 71 72 73 74 75 |
# 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 ⇒ Object
63 64 65 66 67 68 |
# 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? ⇒ Boolean
24 25 26 27 28 29 30 31 32 33 34 35 |
# 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 ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# 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 ⇒ Object
15 16 17 18 19 20 21 22 |
# 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) ⇒ Object
52 53 54 55 56 57 58 59 60 61 |
# 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) ⇒ Object
48 49 50 |
# File 'lib/acts_as_scrubbable/task_runner.rb', line 48 def set_ar_class(ar_class) ar_classes << ar_class end |