Module: ActionCsv

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

Defined Under Namespace

Classes: Error

Constant Summary collapse

COLUMNS =
YAML.safe_load_file "./config/column_names.yml"
VERSION =
"0.1.3"

Class Method Summary collapse

Class Method Details

.export_csv(model_name) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/action_csv.rb', line 9

def self.export_csv model_name
  singularized_name = model_name.singularize.underscore
  file_dir = "./db/csv"
  FileUtils.mkdir_p file_dir unless Dir.exist? file_dir
  file_path = ENV["RACK_ENV"] == "production" ? "#{file_dir}#{model_name.pluralize.underscore}_production.csv" : "#{file_dir}#{model_name.pluralize.underscore}.csv"
  CSV.open(file_path, "w") do |csv|
    if COLUMNS[singularized_name].present?
      return "Columns number doesn't match! Please check ./config/column_names.yml !" unless COLUMNS[singularized_name].size == Object.const_get(singularized_name.camelize).column_names.size
      csv << class_name.column_names.map { |c| COLUMNS[singularized_name][c] }
    else
      csv << class_name.column_names
    end
    class_name.all.reverse.each do |item|
      csv << item.attributes.values
    end
  end
  puts "Export Success!:#{file_path}"
  true
rescue StandardError => error
  error.backtrace
end

.get_tablesObject



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/action_csv.rb', line 31

def self.get_tables
  path = "./db/schema.rb"
  tables = []
  File.open(path, "r") do |f|
    f.each_line.with_index do |line, i|
      tables << line.split("\"")[1] if line.include?("create_table")
    end
  end
  puts tables
  tables
end