Sha256: cbdf42e9e0f638cc0136370e901ef9531c3ca9ce307b8d3f2a5c63adb9439438
Contents?: true
Size: 1.32 KB
Versions: 2
Compression:
Stored size: 1.32 KB
Contents
require 'fog' module Ariranha class Directory ADAPTER_KEYS = { 'AWS' => [:aws_access_key_id, :aws_secret_access_key], 'Google' => [:google_storage_access_key_id, :google_storage_secret_access_key] } def initialize(adapter, config, backups_to_keep = 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']) @backups_to_keep = backups_to_keep end 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..(-backups_to_keep - 1)].each(&:destroy) end private attr_reader :adapter, :fog_storage, :fog_directory, :backups_to_keep def configure_fog_directory(directory_name) fog_storage.directories.get(directory_name) || fog_storage.directories.create(key: directory_name) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ariranha-0.0.2 | lib/ariranha/directory.rb |
ariranha-0.0.1 | lib/ariranha/directory.rb |