class DataSanity::Output

Constants

OPTIONS

Attributes

csv_file[RW]
option[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/data_sanity/output.rb, line 8
def initialize options = {}
  raise Exception.new("This options to output the result of inspector is not valid") unless OPTIONS.include?(options[:option])
  self.option = options[:option]
  @count = 0
  if self.option == :csv
    self.csv_file = FasterCSV.open("#{Rails.root}/tmp/data_inspector.csv", 'w') 
    self.csv_file.add_row ['table_name', 'table_primary_key', 'primary_key_value', 'validation_errors']
  end
end

Public Instance Methods

close() click to toggle source
# File lib/data_sanity/output.rb, line 22
def close
  self.csv_file.close_write if self.csv_file
end
create_from(model, instance, exception = nil) click to toggle source
# File lib/data_sanity/output.rb, line 18
def create_from model, instance, exception = nil
  send("store_to_#{self.option}", model, instance, exception)
end
end_log() click to toggle source
# File lib/data_sanity/output.rb, line 30
def end_log
  puts "==> Inspection completed and found #{@count} validation(s) defaulters"
end
start_log(model) click to toggle source
# File lib/data_sanity/output.rb, line 26
def start_log model
  puts "==> Inspecting :: " + model.to_s
end

Private Instance Methods

store_to_csv(model, instance, exception) click to toggle source
# File lib/data_sanity/output.rb, line 43
def store_to_csv model, instance, exception
  self.csv_file.add_row [model.to_s, model.primary_key, instance.send(model.primary_key), ( exception || instance.errors.full_messages.to_sentence) ]
  @count += 1
end
store_to_table(model, instance, exception) click to toggle source
# File lib/data_sanity/output.rb, line 35
def store_to_table model, instance, exception
  DataInspector.create(:table_name => model.to_s,
                       :table_primary_key => model.primary_key,
                       :primary_key_value => instance.send(model.primary_key),
                       :validation_errors => (exception || instance.errors.full_messages.to_yaml))
  @count += 1
end