class Backupsss::Configuration

A class for managing the properties need for creating, uploading, and cleaning up backups in S3.

Public Class Methods

defaults() click to toggle source
# File lib/backupsss/configuration.rb, line 5
def self.defaults
  {
    s3_bucket:        ENV['S3_BUCKET'],
    s3_bucket_prefix: ENV['S3_BUCKET_PREFIX'],
    backup_src_dir:   ENV['BACKUP_SRC_DIR'],
    backup_dest_dir:  ENV['BACKUP_DEST_DIR'],
    backup_freq:      ENV['BACKUP_FREQ'],
    aws_region:       ENV['AWS_REGION'],
    remote_retention: ENV['REMOTE_RETENTION'].to_i
  }
end
new(opts = {}) click to toggle source
# File lib/backupsss/configuration.rb, line 19
def initialize(opts = {})
  attrs.each do |k, _|
    attr_val = validate_attrs(attrs.merge(opts), k)
    instance_variable_set("@#{k}", attr_val)
  end
end

Private Instance Methods

attrs() click to toggle source
# File lib/backupsss/configuration.rb, line 46
def attrs
  self.class.defaults
end
missing_attr_error_msg(key) click to toggle source
# File lib/backupsss/configuration.rb, line 34
def missing_attr_error_msg(key)
  [
    "Missing '#{key}'",
    'Args should be passed in or set in the env:',
    "#{key.upcase}=value backupsss"
  ].join("\n")
end
throwout_nils(attrs) click to toggle source
# File lib/backupsss/configuration.rb, line 42
def throwout_nils(attrs)
  attrs.reject { |k, v| v.nil? && k != :backup_freq }
end
validate_attrs(attrs, attr_key) click to toggle source
# File lib/backupsss/configuration.rb, line 28
def validate_attrs(attrs, attr_key)
  throwout_nils(attrs).fetch(attr_key) do
    raise ArgumentError, missing_attr_error_msg(attr_key)
  end
end