module ArmaFixer::Execute

Public Instance Methods

checker() click to toggle source
# File lib/arma_fixer/execute.rb, line 60
def checker
  if defined?(ArmaFixer::ATTR_CHECKER)
    ArmaFixer::ATTR_CHECKER
  else
    -> (v) { !v.nil? }
  end
end
close_files() click to toggle source
# File lib/arma_fixer/execute.rb, line 77
def close_files
  files_hash.each_value.reject(&:autoclose?).each(&:close)
end
fetch_file(path) click to toggle source
# File lib/arma_fixer/execute.rb, line 68
def fetch_file(path)
  file_path = path || ArmaFixer::DEFAULT_IMAGE_PATH
  files_hash[path] ||= File.open(file_path)
end
files_hash() click to toggle source
# File lib/arma_fixer/execute.rb, line 73
def files_hash
  @files_hash ||= {}
end
proceed?(model_name, count) click to toggle source
# File lib/arma_fixer/execute.rb, line 45
def proceed?(model_name, count)
  if ENV['ARMAF_CONFIRMATION'] == 'true'
    show "#{model_name} has #{count} records. Do you want to continue? (yes(y) / anything-else)"
    input = STDIN.gets.chomp
    %w(y yes).include?(input)
  else
    true
  end
end
process_records(records, columns, saved_record_ids) click to toggle source
# File lib/arma_fixer/execute.rb, line 30
def process_records(records, columns, saved_record_ids)
  records.find_each do |record|
    save_record = false

    columns.each do |attr, path|
      next if valid_value?(record, attr)
      file = fetch_file(path)
      record.public_send("#{attr}=", file)
      save_record = true
    end

    save_id(record, saved_record_ids) if save_record
  end
end
run!() click to toggle source
# File lib/arma_fixer/execute.rb, line 5
def run!
  ArmaFixer::MODELS_HASH.each do |model_name, columns|
    records = ArmaFixer::APP.const_get(model_name).where('')
    count = records.count
    if proceed?(model_name, count)
      show "Processing #{count} #{model_name} records. Please wait..."
      saved_record_ids = []
      process_records(records, columns, saved_record_ids)
      show "Saved #{model_name} IDs: #{saved_record_ids.sort!}"
      close_files
    else
      show "Skipped processing #{model_name} records."
      next
    end
  end
end
save_id(record, ids) click to toggle source
# File lib/arma_fixer/execute.rb, line 81
def save_id(record, ids)
  record.save(validate: false)
  ids << record.id
end
show(*args) click to toggle source
# File lib/arma_fixer/execute.rb, line 22
def show(*args)
  puts(*args)
end
valid_value?(record, attr) click to toggle source
# File lib/arma_fixer/execute.rb, line 55
def valid_value?(record, attr)
  value = record.public_send(attr)
  checker.call(value)
end