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