class ActiveRecord::Snapshot::Snapshot

Attributes

s3[R]

Public Class Methods

new(filename = nil) click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 4
def initialize(filename = nil)
  @filename = clean(filename) || dump_file
  directory = named? ? paths.named_snapshots : paths.snapshots
  @s3 = S3.new(directory: directory)
end

Public Instance Methods

compressed() click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 18
def compressed
  @filename + ".bz2"
end
download() click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 30
def download
  s3.download_to(encrypted)
end
dump() click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 14
def dump
  @filename
end
encrypted() click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 22
def encrypted
  compressed + ".enc"
end
named?() click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 10
def named?
  /\Asnapshot_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}(\..+)?\z/ !~ File.basename(@filename)
end
upload() click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 26
def upload
  s3.upload(encrypted)
end

Private Instance Methods

clean(filename) click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 42
def clean(filename)
  return unless filename
  basename = File.basename(
    filename.sub(/(\.sql)?(\.bz2)?(\.enc)?$/, ".sql")
  )
  local_path.join(basename).to_s
end
dump_file() click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 50
def dump_file
  local_path.join("snapshot_#{timestamp}.sql").to_s
end
local_path() click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 54
def local_path
  ActiveRecord::Snapshot.config.store.local
end
paths() click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 38
def paths
  ActiveRecord::Snapshot.config.s3.paths
end
timestamp() click to toggle source
# File lib/active_record/snapshot/files/snapshot.rb, line 58
def timestamp
  Time.zone.now.strftime("%Y-%m-%d_%H-%M-%S")
end