class ActiveRecord::Snapshot::Create

Attributes

named_snapshot[R]
snapshot[R]

Public Class Methods

call(*args) click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 6
def self.call(*args)
  new(*args).call
end
new(name: nil) click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 10
def initialize(name: nil)
  @named_snapshot = !name.nil?
  @snapshot = Snapshot.new(name)
end

Public Instance Methods

call() click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 15
def call
  Stepper.call(self, **steps)
end

Private Instance Methods

compress() click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 44
def compress
  Bzip2.compress(snapshot.dump)
end
config() click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 23
def config
  ActiveRecord::Snapshot.config
end
dump() click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 40
def dump
  config.adapter.dump(tables: config.tables, output: snapshot.dump)
end
encrypt() click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 48
def encrypt
  OpenSSL.encrypt(
    input: snapshot.compressed,
    output: snapshot.encrypted
  )
end
steps() click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 27
def steps
  {
    dump: "Create dump of #{config.db.database} at #{snapshot.dump}",
    compress: "Compress snapshot to #{snapshot.compressed}",
    encrypt: "Encrypt snapshot to #{snapshot.encrypted}",
    upload_snapshot: "Upload files to #{config.s3.bucket}"
  }.tap do |s|
    next if named_snapshot
    s[:update_list] = "Update list from #{Version.current} to #{Version.next} with #{snapshot.encrypted}"
    s[:upload_version_info] = "Upload version info to #{config.s3.bucket}"
  end
end
update_list() click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 55
def update_list
  Version.increment
  List.add(version: Version.current, file: snapshot.encrypted)
end
upload_snapshot() click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 60
def upload_snapshot
  snapshot.upload
end
upload_version_info() click to toggle source
# File lib/active_record/snapshot/actions/create.rb, line 64
def upload_version_info
  Version.upload
  List.upload
end