s3_db_assets_backup 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/s3_db_assets_backup/railties/db_backup.rake +8 -4
- data/lib/unit_converter.rb +19 -0
- metadata +55 -45
@@ -2,6 +2,7 @@ require 'find'
|
|
2
2
|
require 'fileutils'
|
3
3
|
require 'aws/s3'
|
4
4
|
require 'pony'
|
5
|
+
require 'unit_converter'
|
5
6
|
|
6
7
|
namespace :db do
|
7
8
|
desc "Backup the database to a file. Options: RAILS_ENV=production"
|
@@ -91,11 +92,14 @@ namespace :db do
|
|
91
92
|
AWS::S3::Base.establish_connection!(:access_key_id => S3_CONFIG[:access_key_id], :secret_access_key => S3_CONFIG[:secret_access_key])
|
92
93
|
BUCKET = S3_CONFIG[:bucket]
|
93
94
|
bucket = AWS::S3::Bucket.find(BUCKET)
|
94
|
-
|
95
|
-
|
96
|
-
message = "Archive contains the following backups:\n\n"
|
97
|
-
all_backups.each { |f| message << f.key + "\n" }
|
95
|
+
backups = bucket.objects.select { |f| f.key.match(/dump/) }.sort { |a,b| a.key <=> b.key }.reverse
|
98
96
|
email = EMAIL_CONFIG
|
97
|
+
message = "Archive contains the following backups:\n\n"
|
98
|
+
|
99
|
+
backups.each do |file|
|
100
|
+
file_size = number_to_human_size(file.content_length.to_i)
|
101
|
+
message << "#{file.key} (#{file_size})\n"
|
102
|
+
end
|
99
103
|
|
100
104
|
Pony.mail(
|
101
105
|
:to => email[:to],
|
@@ -0,0 +1,19 @@
|
|
1
|
+
def number_to_human_size(number)
|
2
|
+
return nil if number.nil?
|
3
|
+
|
4
|
+
storage_units_format = '%n %u'
|
5
|
+
|
6
|
+
if number.to_i < 1024
|
7
|
+
unit = number > 1 ? 'Bytes' : 'Byte'
|
8
|
+
return storage_units_format.gsub(/%n/, number.to_i.to_s).gsub(/%u/, unit)
|
9
|
+
else
|
10
|
+
max_exp = 4 # The number of units - 1
|
11
|
+
number = Float(number)
|
12
|
+
exponent = (Math.log(number) / Math.log(1024)).to_i # Convert to base 1024
|
13
|
+
exponent = max_exp if exponent > max_exp # we need this to avoid overflow for the highest unit
|
14
|
+
number /= 1024 ** exponent
|
15
|
+
|
16
|
+
unit = %w(Byte KB MB GB TB)[exponent]
|
17
|
+
return storage_units_format.gsub(/%n/, number.round(2).to_s).gsub(/%u/, unit)
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,85 +1,95 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: s3_db_assets_backup
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
4
5
|
prerelease:
|
5
|
-
version: 0.2.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Chris Barnes
|
9
9
|
- Michael Burk
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2012-11-13 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: pony
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.4'
|
25
23
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: aws-s3
|
29
24
|
prerelease: false
|
30
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '1.4'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: aws-s3
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
31
34
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
35
38
|
version: 0.6.3
|
36
39
|
type: :runtime
|
37
|
-
|
38
|
-
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.6.3
|
47
|
+
description: Generates rake tasks for backing up and restoring your database and public
|
48
|
+
folder (which should also contain any user uploaded assets) to and from an existing
|
49
|
+
bucket in your Amazon S3 account. The rake tasks compresses and uploads each backup
|
50
|
+
with a time stamp and the config file allows you to set how many of each backup
|
51
|
+
to keep. Additionally, the plugin can be configured to generate and send a backup
|
52
|
+
status report via email.
|
39
53
|
email: chris@randomutterings.com
|
40
54
|
executables: []
|
41
|
-
|
42
55
|
extensions: []
|
43
|
-
|
44
|
-
extra_rdoc_files:
|
56
|
+
extra_rdoc_files:
|
45
57
|
- README.rdoc
|
46
|
-
files:
|
58
|
+
files:
|
59
|
+
- lib/generators/s3_backup/USAGE
|
47
60
|
- lib/generators/s3_backup/s3_backup_generator.rb
|
48
61
|
- lib/generators/s3_backup/templates/s3_backup_config.yml
|
49
|
-
- lib/
|
62
|
+
- lib/s3_db_assets_backup.rb
|
50
63
|
- lib/s3_db_assets_backup/engine.rb
|
51
64
|
- lib/s3_db_assets_backup/railties/assets_backup.rake
|
52
65
|
- lib/s3_db_assets_backup/railties/db_backup.rake
|
53
|
-
- lib/
|
66
|
+
- lib/unit_converter.rb
|
54
67
|
- config/initializers/load_s3_backup_config.rb
|
55
68
|
- README.rdoc
|
56
69
|
homepage: http://www.randomutterings.com/projects/s3_db_assets_backup
|
57
70
|
licenses: []
|
58
|
-
|
59
71
|
post_install_message:
|
60
72
|
rdoc_options: []
|
61
|
-
|
62
|
-
require_paths:
|
73
|
+
require_paths:
|
63
74
|
- lib
|
64
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
76
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version:
|
70
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
82
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version:
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
76
87
|
requirements: []
|
77
|
-
|
78
88
|
rubyforge_project:
|
79
89
|
rubygems_version: 1.8.24
|
80
90
|
signing_key:
|
81
91
|
specification_version: 3
|
82
|
-
summary: Rake tasks for backing up and restoring db and public folder to and from
|
92
|
+
summary: Rake tasks for backing up and restoring db and public folder to and from
|
93
|
+
an existing S3 bucket with email notifications.
|
83
94
|
test_files: []
|
84
|
-
|
85
95
|
has_rdoc:
|