class Ariranha::Directory

Constants

ADAPTER_KEYS

Attributes

adapter[R]
fog_directory[R]
fog_storage[R]
keep_backups[R]

Public Class Methods

new(adapter, config, keep_backups = 3) click to toggle source
# File lib/ariranha/directory.rb, line 11
def initialize(adapter, config, keep_backups = 3)
  @fog_storage = Fog::Storage.new(
    ADAPTER_KEYS[adapter][0] => config['access_key'],
    ADAPTER_KEYS[adapter][1] => config['secret_key'],
    provider: adapter)
  @adapter = adapter
  @fog_directory = configure_fog_directory(config['directory'])
  @keep_backups = keep_backups
end

Public Instance Methods

upload(filename, parent_dir) click to toggle source
# File lib/ariranha/directory.rb, line 21
def upload(filename, parent_dir)
  puts "uploading #{filename} to #{adapter}..."
  fog_directory.files.create(
    key: "#{parent_dir}/#{filename}",
    body: File.open("/tmp/#{filename}")
  )
  sorted_files = fog_directory.files.all(prefix: parent_dir + '/')
                 .reload.sort do |x, y|
    x.last_modified <=> y.last_modified
  end
  sorted_files[0..(-keep_backups - 1)].each(&:destroy)
end

Private Instance Methods

configure_fog_directory(directory_name) click to toggle source
# File lib/ariranha/directory.rb, line 38
def configure_fog_directory(directory_name)
  fog_storage.directories.get(directory_name) ||
    fog_storage.directories.create(key: directory_name)
end