backup 2.4.5.1 → 3.0.0.build.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.infinity_test +7 -0
- data/.rspec +3 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +88 -0
- data/LICENSE.md +24 -0
- data/README.md +189 -75
- data/backup.gemspec +41 -0
- data/bin/backup +161 -90
- data/lib/backup.rb +133 -117
- data/lib/backup/archive.rb +54 -0
- data/lib/backup/cli.rb +50 -0
- data/lib/backup/compressor/base.rb +17 -0
- data/lib/backup/compressor/gzip.rb +61 -0
- data/lib/backup/configuration/base.rb +7 -67
- data/lib/backup/configuration/compressor/base.rb +10 -0
- data/lib/backup/configuration/compressor/gzip.rb +23 -0
- data/lib/backup/configuration/database/base.rb +18 -0
- data/lib/backup/configuration/database/mongodb.rb +37 -0
- data/lib/backup/configuration/database/mysql.rb +37 -0
- data/lib/backup/configuration/database/postgresql.rb +37 -0
- data/lib/backup/configuration/database/redis.rb +35 -0
- data/lib/backup/configuration/encryptor/base.rb +10 -0
- data/lib/backup/configuration/encryptor/gpg.rb +17 -0
- data/lib/backup/configuration/encryptor/open_ssl.rb +26 -0
- data/lib/backup/configuration/helpers.rb +47 -17
- data/lib/backup/configuration/notifier/base.rb +39 -0
- data/lib/backup/configuration/notifier/mail.rb +52 -0
- data/lib/backup/configuration/storage/base.rb +18 -0
- data/lib/backup/configuration/storage/cloudfiles.rb +21 -0
- data/lib/backup/configuration/storage/dropbox.rb +25 -0
- data/lib/backup/configuration/storage/ftp.rb +25 -0
- data/lib/backup/configuration/storage/rsync.rb +25 -0
- data/lib/backup/configuration/storage/s3.rb +25 -0
- data/lib/backup/configuration/storage/scp.rb +25 -0
- data/lib/backup/configuration/storage/sftp.rb +25 -0
- data/lib/backup/database/base.rb +33 -0
- data/lib/backup/database/mongodb.rb +137 -0
- data/lib/backup/database/mysql.rb +104 -0
- data/lib/backup/database/postgresql.rb +111 -0
- data/lib/backup/database/redis.rb +105 -0
- data/lib/backup/encryptor/base.rb +17 -0
- data/lib/backup/encryptor/gpg.rb +78 -0
- data/lib/backup/encryptor/open_ssl.rb +67 -0
- data/lib/backup/finder.rb +39 -0
- data/lib/backup/logger.rb +80 -0
- data/lib/backup/model.rb +249 -0
- data/lib/backup/notifier/base.rb +29 -0
- data/lib/backup/notifier/binder.rb +32 -0
- data/lib/backup/notifier/mail.rb +141 -0
- data/lib/backup/notifier/templates/notify_failure.erb +31 -0
- data/lib/backup/notifier/templates/notify_success.erb +16 -0
- data/lib/backup/storage/base.rb +60 -3
- data/lib/backup/storage/cloudfiles.rb +85 -6
- data/lib/backup/storage/dropbox.rb +74 -4
- data/lib/backup/storage/ftp.rb +103 -27
- data/lib/backup/storage/object.rb +45 -0
- data/lib/backup/storage/rsync.rb +100 -0
- data/lib/backup/storage/s3.rb +100 -7
- data/lib/backup/storage/scp.rb +94 -19
- data/lib/backup/storage/sftp.rb +94 -19
- data/lib/backup/version.rb +70 -1
- data/lib/templates/archive +4 -0
- data/lib/templates/compressor/gzip +4 -0
- data/lib/templates/database/mongodb +10 -0
- data/lib/templates/database/mysql +11 -0
- data/lib/templates/database/postgresql +11 -0
- data/lib/templates/database/redis +10 -0
- data/lib/templates/encryptor/gpg +9 -0
- data/lib/templates/encryptor/openssl +5 -0
- data/lib/templates/notifier/mail +14 -0
- data/lib/templates/readme +15 -0
- data/lib/templates/storage/cloudfiles +7 -0
- data/lib/templates/storage/dropbox +8 -0
- data/lib/templates/storage/ftp +8 -0
- data/lib/templates/storage/rsync +7 -0
- data/lib/templates/storage/s3 +8 -0
- data/lib/templates/storage/scp +8 -0
- data/lib/templates/storage/sftp +8 -0
- data/spec/archive_spec.rb +53 -0
- data/spec/backup_spec.rb +11 -0
- data/spec/compressor/gzip_spec.rb +59 -0
- data/spec/configuration/base_spec.rb +35 -0
- data/spec/configuration/compressor/gzip_spec.rb +28 -0
- data/spec/configuration/database/base_spec.rb +16 -0
- data/spec/configuration/database/mongodb_spec.rb +30 -0
- data/spec/configuration/database/mysql_spec.rb +32 -0
- data/spec/configuration/database/postgresql_spec.rb +32 -0
- data/spec/configuration/database/redis_spec.rb +30 -0
- data/spec/configuration/encryptor/gpg_spec.rb +25 -0
- data/spec/configuration/encryptor/open_ssl_spec.rb +31 -0
- data/spec/configuration/notifier/mail_spec.rb +32 -0
- data/spec/configuration/storage/cloudfiles_spec.rb +34 -0
- data/spec/configuration/storage/dropbox_spec.rb +40 -0
- data/spec/configuration/storage/ftp_spec.rb +40 -0
- data/spec/configuration/storage/rsync_spec.rb +37 -0
- data/spec/configuration/storage/s3_spec.rb +37 -0
- data/spec/configuration/storage/scp_spec.rb +40 -0
- data/spec/configuration/storage/sftp_spec.rb +40 -0
- data/spec/database/base_spec.rb +30 -0
- data/spec/database/mongodb_spec.rb +144 -0
- data/spec/database/mysql_spec.rb +150 -0
- data/spec/database/postgresql_spec.rb +164 -0
- data/spec/database/redis_spec.rb +122 -0
- data/spec/encryptor/gpg_spec.rb +57 -0
- data/spec/encryptor/open_ssl_spec.rb +102 -0
- data/spec/logger_spec.rb +37 -0
- data/spec/model_spec.rb +236 -0
- data/spec/notifier/mail_spec.rb +97 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/storage/base_spec.rb +33 -0
- data/spec/storage/cloudfiles_spec.rb +102 -0
- data/spec/storage/dropbox_spec.rb +89 -0
- data/spec/storage/ftp_spec.rb +133 -0
- data/spec/storage/object_spec.rb +74 -0
- data/spec/storage/rsync_spec.rb +115 -0
- data/spec/storage/s3_spec.rb +110 -0
- data/spec/storage/scp_spec.rb +129 -0
- data/spec/storage/sftp_spec.rb +125 -0
- data/spec/version_spec.rb +32 -0
- metadata +139 -123
- data/CHANGELOG +0 -131
- data/LICENSE +0 -20
- data/generators/backup/backup_generator.rb +0 -69
- data/generators/backup/templates/backup.rake +0 -56
- data/generators/backup/templates/backup.rb +0 -253
- data/generators/backup/templates/create_backup_tables.rb +0 -18
- data/generators/backup_update/backup_update_generator.rb +0 -50
- data/generators/backup_update/templates/migrations/update_backup_tables.rb +0 -27
- data/lib/backup/adapters/archive.rb +0 -34
- data/lib/backup/adapters/base.rb +0 -167
- data/lib/backup/adapters/custom.rb +0 -41
- data/lib/backup/adapters/mongo_db.rb +0 -139
- data/lib/backup/adapters/mysql.rb +0 -60
- data/lib/backup/adapters/postgresql.rb +0 -60
- data/lib/backup/adapters/sqlite.rb +0 -25
- data/lib/backup/command_helper.rb +0 -14
- data/lib/backup/configuration/adapter.rb +0 -21
- data/lib/backup/configuration/adapter_options.rb +0 -8
- data/lib/backup/configuration/attributes.rb +0 -19
- data/lib/backup/configuration/mail.rb +0 -20
- data/lib/backup/configuration/smtp.rb +0 -8
- data/lib/backup/configuration/storage.rb +0 -8
- data/lib/backup/connection/cloudfiles.rb +0 -75
- data/lib/backup/connection/dropbox.rb +0 -63
- data/lib/backup/connection/s3.rb +0 -88
- data/lib/backup/core_ext/object.rb +0 -5
- data/lib/backup/environment/base.rb +0 -12
- data/lib/backup/environment/rails_configuration.rb +0 -15
- data/lib/backup/environment/unix_configuration.rb +0 -109
- data/lib/backup/mail/base.rb +0 -97
- data/lib/backup/mail/mail.txt +0 -7
- data/lib/backup/record/base.rb +0 -65
- data/lib/backup/record/cloudfiles.rb +0 -28
- data/lib/backup/record/dropbox.rb +0 -27
- data/lib/backup/record/ftp.rb +0 -39
- data/lib/backup/record/local.rb +0 -26
- data/lib/backup/record/s3.rb +0 -25
- data/lib/backup/record/scp.rb +0 -33
- data/lib/backup/record/sftp.rb +0 -38
- data/lib/backup/storage/local.rb +0 -22
- data/lib/generators/backup/USAGE +0 -10
- data/lib/generators/backup/backup_generator.rb +0 -47
- data/lib/generators/backup/templates/backup.rake +0 -56
- data/lib/generators/backup/templates/backup.rb +0 -236
- data/lib/generators/backup/templates/create_backup_tables.rb +0 -18
- data/setup/backup.rb +0 -257
- data/setup/backup.sqlite3 +0 -0
@@ -1,60 +0,0 @@
|
|
1
|
-
module Backup
|
2
|
-
module Adapters
|
3
|
-
class PostgreSQL < Backup::Adapters::Base
|
4
|
-
|
5
|
-
attr_accessor :user, :password, :database, :skip_tables, :host, :port, :socket, :additional_options, :su_as_user
|
6
|
-
|
7
|
-
private
|
8
|
-
|
9
|
-
# Dumps and Compresses the PostgreSQL file
|
10
|
-
def perform
|
11
|
-
log system_messages[:pgdump]; log system_messages[:compressing]
|
12
|
-
ENV['PGPASSWORD'] = password
|
13
|
-
if su_as_user
|
14
|
-
run "su #{su_as_user} -c \"#{pg_dump} -U #{user} #{options} #{additional_options} #{tables_to_skip} #{database} | gzip -f --best > #{File.join(tmp_path, compressed_file)}\""
|
15
|
-
else
|
16
|
-
run "#{pg_dump} -U #{user} #{options} #{additional_options} #{tables_to_skip} #{database} | gzip -f --best > #{File.join(tmp_path, compressed_file)}"
|
17
|
-
end
|
18
|
-
ENV['PGPASSWORD'] = nil
|
19
|
-
end
|
20
|
-
|
21
|
-
def pg_dump
|
22
|
-
# try to determine the full path, and fall back to pg_dump if not found
|
23
|
-
cmd = `which pg_dump`.chomp
|
24
|
-
cmd = 'pg_dump' if cmd.empty?
|
25
|
-
cmd
|
26
|
-
end
|
27
|
-
|
28
|
-
def performed_file_extension
|
29
|
-
".sql"
|
30
|
-
end
|
31
|
-
|
32
|
-
# Loads the initial settings
|
33
|
-
def load_settings
|
34
|
-
%w(user password database skip_tables additional_options su_as_user).each do |attribute|
|
35
|
-
send(:"#{attribute}=", procedure.get_adapter_configuration.attributes[attribute])
|
36
|
-
end
|
37
|
-
|
38
|
-
%w(host port socket).each do |attribute|
|
39
|
-
send(:"#{attribute}=", procedure.get_adapter_configuration.get_options.attributes[attribute])
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# Returns a list of options in PostgreSQL syntax
|
44
|
-
def options
|
45
|
-
options = String.new
|
46
|
-
options += " --port='#{port}' " unless port.blank?
|
47
|
-
options += " --host='#{host}' " unless host.blank?
|
48
|
-
options += " --host='#{socket}' " unless socket.blank? unless options.include?('--host=')
|
49
|
-
options
|
50
|
-
end
|
51
|
-
|
52
|
-
# Returns a list of tables to skip in PostgreSQL syntax
|
53
|
-
def tables_to_skip
|
54
|
-
return "" unless skip_tables
|
55
|
-
[*skip_tables].map {|table| " -T \"#{table}\" "}
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Backup
|
2
|
-
module Adapters
|
3
|
-
class SQLite < Base
|
4
|
-
|
5
|
-
attr_accessor :database
|
6
|
-
|
7
|
-
private
|
8
|
-
|
9
|
-
# Compress the sqlite file
|
10
|
-
def perform
|
11
|
-
log system_messages[:sqlite]
|
12
|
-
run "gzip -c --best #{database} > #{File.join(tmp_path, compressed_file)}"
|
13
|
-
end
|
14
|
-
|
15
|
-
def load_settings
|
16
|
-
self.database = procedure.get_adapter_configuration.attributes['database']
|
17
|
-
end
|
18
|
-
|
19
|
-
def performed_file_extension
|
20
|
-
""
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module Backup
|
2
|
-
module CommandHelper
|
3
|
-
def run(command, opts={})
|
4
|
-
opts[:exit_on_failure] ||= false
|
5
|
-
output = `#{command}`
|
6
|
-
exit 1 if opts[:exit_on_failure] && !$?.success?
|
7
|
-
output
|
8
|
-
end
|
9
|
-
|
10
|
-
def log(command)
|
11
|
-
puts "Backup (#{Time.now.strftime("%Y-%m-%d %H:%M:%S %Z")}) => #{command}"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Backup
|
2
|
-
module Configuration
|
3
|
-
class Adapter
|
4
|
-
extend Backup::Configuration::Attributes
|
5
|
-
generate_attributes %w(files exclude user password database tables skip_tables commands additional_options backup_method)
|
6
|
-
|
7
|
-
def initialize
|
8
|
-
@options = Backup::Configuration::AdapterOptions.new
|
9
|
-
end
|
10
|
-
|
11
|
-
def options(&block)
|
12
|
-
@options.instance_eval &block
|
13
|
-
end
|
14
|
-
|
15
|
-
def get_options
|
16
|
-
@options
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Backup
|
2
|
-
module Configuration
|
3
|
-
module Attributes
|
4
|
-
|
5
|
-
def generate_attributes(*attrs)
|
6
|
-
define_method :attributes do
|
7
|
-
@attributes ||= {}
|
8
|
-
end
|
9
|
-
|
10
|
-
attrs.flatten.each do |att|
|
11
|
-
define_method att do |value|
|
12
|
-
self.attributes[att.to_s] = value
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Backup
|
2
|
-
module Configuration
|
3
|
-
class Mail
|
4
|
-
extend Backup::Configuration::Attributes
|
5
|
-
generate_attributes %w(from to smtp)
|
6
|
-
|
7
|
-
def initialize
|
8
|
-
@smtp_configuration = Backup::Configuration::SMTP.new
|
9
|
-
end
|
10
|
-
|
11
|
-
def smtp(&block)
|
12
|
-
@smtp_configuration.instance_eval &block
|
13
|
-
end
|
14
|
-
|
15
|
-
def get_smtp_configuration
|
16
|
-
@smtp_configuration
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,75 +0,0 @@
|
|
1
|
-
require 'cloudfiles'
|
2
|
-
|
3
|
-
module Backup
|
4
|
-
module Connection
|
5
|
-
class CloudFiles
|
6
|
-
|
7
|
-
attr_accessor :adapter, :procedure, :api_key, :username, :cf_container, :final_file, :tmp_path
|
8
|
-
|
9
|
-
# Initializes the Cloud Files connection, setting the values using the
|
10
|
-
# Cloud Files adapter
|
11
|
-
def initialize(adapter = false)
|
12
|
-
if adapter
|
13
|
-
self.adapter = adapter
|
14
|
-
self.procedure = adapter.procedure
|
15
|
-
self.final_file = adapter.final_file
|
16
|
-
self.tmp_path = adapter.tmp_path.gsub('\ ', ' ')
|
17
|
-
load_storage_configuration_attributes
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
# Sets values from a procedure, rather than from the adapter object
|
22
|
-
def static_initialize(procedure)
|
23
|
-
self.procedure = procedure
|
24
|
-
load_storage_configuration_attributes(true)
|
25
|
-
end
|
26
|
-
|
27
|
-
# Establishes a connection with Rackspace Cloud Files using the
|
28
|
-
# credentials provided by the user
|
29
|
-
def connect
|
30
|
-
connection
|
31
|
-
end
|
32
|
-
|
33
|
-
# Wrapper for the Connection object
|
34
|
-
def connection
|
35
|
-
::CloudFiles::Connection.new(username, api_key)
|
36
|
-
end
|
37
|
-
|
38
|
-
# Wrapper for the Container object
|
39
|
-
def container
|
40
|
-
connection.container(cf_container)
|
41
|
-
end
|
42
|
-
|
43
|
-
# Initializes the file transfer to Rackspace Cloud Files
|
44
|
-
# This can only run after a connection has been made using the #connect method
|
45
|
-
def store
|
46
|
-
object = container.create_object(final_file)
|
47
|
-
object.write(open(File.join(tmp_path, final_file)))
|
48
|
-
end
|
49
|
-
|
50
|
-
# Destroys file from a bucket on Amazon S3
|
51
|
-
def destroy(file, c)
|
52
|
-
c = connection.container(c)
|
53
|
-
c.delete_object(file)
|
54
|
-
end
|
55
|
-
|
56
|
-
private
|
57
|
-
|
58
|
-
def load_storage_configuration_attributes(static = false)
|
59
|
-
%w(api_key username).each do |attribute|
|
60
|
-
if static
|
61
|
-
send("#{attribute}=", procedure.get_storage_configuration.attributes[attribute])
|
62
|
-
else
|
63
|
-
send("#{attribute}=", adapter.procedure.get_storage_configuration.attributes[attribute])
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
if static
|
68
|
-
self.cf_container = procedure.get_storage_configuration.attributes['container']
|
69
|
-
else
|
70
|
-
self.cf_container = adapter.procedure.get_storage_configuration.attributes['container']
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'dropbox'
|
2
|
-
|
3
|
-
module Backup
|
4
|
-
module Connection
|
5
|
-
class Dropbox
|
6
|
-
|
7
|
-
attr_accessor :adapter, :procedure, :final_file, :tmp_path, :api_key, :secret_access_key, :username, :password, :path
|
8
|
-
|
9
|
-
def initialize(adapter=false)
|
10
|
-
if adapter
|
11
|
-
self.adapter = adapter
|
12
|
-
self.procedure = adapter.procedure
|
13
|
-
self.final_file = adapter.final_file
|
14
|
-
self.tmp_path = adapter.tmp_path.gsub('\ ', ' ')
|
15
|
-
|
16
|
-
load_storage_configuration_attributes
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def static_initialize(procedure)
|
21
|
-
self.procedure = procedure
|
22
|
-
load_storage_configuration_attributes(true)
|
23
|
-
end
|
24
|
-
|
25
|
-
def session
|
26
|
-
@session ||= ::Dropbox::Session.new(api_key, secret_access_key)
|
27
|
-
unless @session.authorized?
|
28
|
-
@session.authorizing_user = username
|
29
|
-
@session.authorizing_password = password
|
30
|
-
@session.authorize!
|
31
|
-
end
|
32
|
-
|
33
|
-
@session
|
34
|
-
end
|
35
|
-
|
36
|
-
def connect
|
37
|
-
session
|
38
|
-
end
|
39
|
-
|
40
|
-
def path
|
41
|
-
@path || "backups"
|
42
|
-
end
|
43
|
-
|
44
|
-
def store
|
45
|
-
path_to_file = File.join(tmp_path, final_file)
|
46
|
-
session.upload(path_to_file, path, :mode => :dropbox, :timeout => 360)
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def load_storage_configuration_attributes(static=false)
|
52
|
-
%w(api_key secret_access_key username password path).each do |attribute|
|
53
|
-
if static
|
54
|
-
send("#{attribute}=", procedure.get_storage_configuration.attributes[attribute])
|
55
|
-
else
|
56
|
-
send("#{attribute}=", adapter.procedure.get_storage_configuration.attributes[attribute])
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
data/lib/backup/connection/s3.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
require "fog"
|
2
|
-
|
3
|
-
module Backup
|
4
|
-
module Connection
|
5
|
-
class S3
|
6
|
-
include Backup::CommandHelper
|
7
|
-
|
8
|
-
MAX_S3_FILE_SIZE = 5368709120 - 1
|
9
|
-
|
10
|
-
attr_accessor :adapter, :procedure, :access_key_id, :secret_access_key, :host, :s3_bucket, :use_ssl, :final_file, :tmp_path
|
11
|
-
|
12
|
-
# Initializes the S3 connection, setting the values using the S3 adapter
|
13
|
-
def initialize(adapter = false)
|
14
|
-
if adapter
|
15
|
-
self.adapter = adapter
|
16
|
-
self.procedure = adapter.procedure
|
17
|
-
self.final_file = adapter.final_file
|
18
|
-
self.tmp_path = adapter.tmp_path.gsub('\ ', ' ')
|
19
|
-
load_storage_configuration_attributes
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
# Sets values from a procedure, rather than from the adapter object
|
24
|
-
def static_initialize(procedure)
|
25
|
-
self.procedure = procedure
|
26
|
-
load_storage_configuration_attributes(true)
|
27
|
-
end
|
28
|
-
|
29
|
-
# Establishes a connection with Amazon S3 using the credentials provided by the user
|
30
|
-
def connection
|
31
|
-
@_connection ||= Fog::AWS::Storage.new(
|
32
|
-
:aws_access_key_id => access_key_id,
|
33
|
-
:aws_secret_access_key => secret_access_key
|
34
|
-
)
|
35
|
-
end
|
36
|
-
|
37
|
-
# Initializes the file transfer to Amazon S3
|
38
|
-
# This can only run after a connection has been made using the #connect method
|
39
|
-
def store
|
40
|
-
#TODO: need to add logic like this to restore: `cat /mnt/backups/part.xx >>restore.tgz`
|
41
|
-
tmp_file_path = File.join(tmp_path, final_file)
|
42
|
-
store_files = []
|
43
|
-
if File.stat(File.join(tmp_path, final_file)).size >= MAX_S3_FILE_SIZE
|
44
|
-
#we need to split!
|
45
|
-
`split -b #{MAX_S3_FILE_SIZE} #{tmp_file_path} #{tmp_file_path}.`
|
46
|
-
store_files += `ls #{tmp_file_path}.*`.split
|
47
|
-
log("Splitting '#{final_file}' into #{store_files.length} parts as it is too large for s3.")
|
48
|
-
else
|
49
|
-
store_files << tmp_file_path
|
50
|
-
end
|
51
|
-
|
52
|
-
#lets make sure it exists
|
53
|
-
self.connection.put_bucket(s3_bucket)
|
54
|
-
|
55
|
-
store_files.each do |tmp_file|
|
56
|
-
file_name = File.basename(tmp_file)
|
57
|
-
log("Saving '#{file_name}' to s3 bucket '#{s3_bucket}'")
|
58
|
-
self.connection.put_object(s3_bucket, file_name, open(tmp_file))
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
# Destroys file from a bucket on Amazon S3
|
63
|
-
def destroy(file, bucket_as_string)
|
64
|
-
self.connection.put_bucket(s3_bucket)
|
65
|
-
connection.delete_object(s3_bucket, file)
|
66
|
-
end
|
67
|
-
|
68
|
-
private
|
69
|
-
|
70
|
-
def load_storage_configuration_attributes(static = false)
|
71
|
-
%w(access_key_id secret_access_key use_ssl host).each do |attribute|
|
72
|
-
if static
|
73
|
-
send("#{attribute}=", procedure.get_storage_configuration.attributes[attribute])
|
74
|
-
else
|
75
|
-
send("#{attribute}=", adapter.procedure.get_storage_configuration.attributes[attribute])
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
if static
|
80
|
-
self.s3_bucket = procedure.get_storage_configuration.attributes['bucket']
|
81
|
-
else
|
82
|
-
self.s3_bucket = adapter.procedure.get_storage_configuration.attributes['bucket']
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|