Class: DatabaseClonerRails::Downloader

Inherits:
Object
  • Object
show all
Defined in:
lib/database_cloner_rails/downloader.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dump_dir: self.class.default_dump_dir, only: nil) ⇒ Downloader

Returns a new instance of Downloader.



14
15
16
17
# File 'lib/database_cloner_rails/downloader.rb', line 14

def initialize(dump_dir: self.class.default_dump_dir, only: nil)
  @dump_dir = dump_dir
  @only     = Array(only).map(&:to_s).reject(&:empty?)
end

Class Method Details

.default_dump_dirObject



10
11
12
# File 'lib/database_cloner_rails/downloader.rb', line 10

def self.default_dump_dir
  File.join(Rails.root, "lib", "tasks", "database_cloner", "db_dump")
end

.run(dump_dir: default_dump_dir, only: nil) ⇒ Object



6
7
8
# File 'lib/database_cloner_rails/downloader.rb', line 6

def self.run(dump_dir: default_dump_dir, only: nil)
  new(dump_dir: dump_dir, only: only).run
end

Instance Method Details

#runObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/database_cloner_rails/downloader.rb', line 19

def run
  FileUtils.mkdir_p(@dump_dir)
  tables = ActiveRecord::Base.connection.tables
  tables = tables.select { |t| @only.include?(t) } if @only.any?
  tables.each do |table|
    model = table.classify.safe_constantize
    next unless model.present?
    dump_table(table, model)
  end
end