Module: ModelTableMapper

Defined in:
lib/model_table_mapper.rb,
lib/model_table_mapper/version.rb

Constant Summary collapse

VERSION =
"0.1.6"

Class Method Summary collapse

Class Method Details

.list(*args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/model_table_mapper.rb', line 5

def self.list(*args)
  model_files = []
  Find.find('app/models') do |path|
    model_files << path if path =~ /.*\.rb/
  end
  models = model_files.map do |file_name|
    file_content = File.open("#{file_name}").read
    class_statement = file_content.match(/^class +[\w:]+ *< *(ApplicationRecord|ActiveRecord::Base)\s*/).try(:[], 0)
    class_statement.match(/class +([\w:]+)/).try(:[], 1) if class_statement.present?
  end.compact
  model_table_hash = models.each_with_object({}) do |model, result|
    result[model] = model.constantize.table_name
  end
  if args.present?
    filename = args[0].strip
    filename = (filename =~ /.csv$/).present? ? filename : "#{filename}.csv"
    CSV.open(filename, "wb") {|csv| csv << ['model', 'table']; model_table_hash.to_a.each {|elem| csv << elem} }
    puts "CSV output file: #{filename}"
  end
  model_table_hash
end