class ActiveRecord::Snapshot::Import
Attributes
snapshot[R]
tables[R]
version[R]
Public Class Methods
call(*args)
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 4 def self.call(*args) new(*args).call end
new(version: nil, tables: [])
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 8 def initialize(version: nil, tables: []) @version = version if named_version? name = version else @version, name = SelectSnapshot.call(version) end @snapshot = Snapshot.new(name) @tables = tables end
Public Instance Methods
call()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 19 def call Stepper.call(self, **steps) end
Private Instance Methods
config()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 27 def config ActiveRecord::Snapshot.config end
decompress()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 71 def decompress Bzip2.decompress(snapshot.compressed) end
decrypt()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 64 def decrypt OpenSSL.decrypt( input: snapshot.encrypted, output: snapshot.compressed ) && FileUtils.rm(snapshot.encrypted) end
download()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 60 def download snapshot.download end
filter_tables()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 80 def filter_tables FilterTables.call(tables: tables, sql_dump: snapshot.dump) end
import()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 84 def import config.adapter.import(input: snapshot.dump) Rake::Task["db:schema:dump"].invoke end
named_version?()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 31 def named_version? !version.blank? && version.to_i.to_s != version.to_s end
reset_database()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 75 def reset_database Rake::Task["db:drop"].invoke Rake::Task["db:create"].invoke end
save()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 93 def save Version.write(version) end
set_env()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 89 def set_env Rake::Task["db:environment:set"].invoke end
steps()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 39 def steps steps = {} unless version_downloaded? steps[:download] = "Download snapshot to #{snapshot.encrypted}" steps[:decrypt] = "Decrypt snapshot to #{snapshot.compressed}" steps[:decompress] = "Decompress snapshot to #{snapshot.dump}" end if tables.empty? steps[:reset_database] = "Reset database" else steps[:filter_tables] = "Filter tables" end steps[:import] = "Importing the snapshot into #{config.db.database}" steps[:save] = "Caching the new snapshot version" unless named_version? || tables.present? steps[:set_env] = "Setting database environment to #{Rails.env}" if Rails::VERSION::MAJOR >= 5 steps end
version_downloaded?()
click to toggle source
# File lib/active_record/snapshot/actions/import.rb, line 35 def version_downloaded? version.to_i == Version.current && File.file?(snapshot.dump) end