s3_db_assets_backup 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- all_backups = bucket.objects.select { |f| f.key.match(/dump/) }.sort { |a,b| a.key <=> b.key }.reverse
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
- date: 2012-11-11 00:00:00 Z
15
- dependencies:
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
- prerelease: false
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: "1.4"
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- version_requirements: *id002
38
- description: Generates rake tasks for backing up and restoring your database and public folder (which should also contain any user uploaded assets) to and from an existing bucket in your Amazon S3 account. The rake tasks compresses and uploads each backup with a time stamp and the config file allows you to set how many of each backup to keep. Additionally, the plugin can be configured to generate and send a backup status report via email.
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/generators/s3_backup/USAGE
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/s3_db_assets_backup.rb
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: "0"
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: "0"
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 an existing S3 bucket with email notifications.
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: