heroku-mongo-backup 0.2.4 → 0.2.5
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/heroku_mongo_backup.rb +8 -12
- data/lib/s3_helpers.rb +46 -0
- metadata +8 -18
data/lib/heroku_mongo_backup.rb
CHANGED
@@ -10,6 +10,7 @@ require 'rubygems'
|
|
10
10
|
|
11
11
|
module HerokuMongoBackup
|
12
12
|
require 'heroku_mongo_backup/railtie' if defined?(Rails)
|
13
|
+
require 's3_helpers'
|
13
14
|
|
14
15
|
class Backup
|
15
16
|
def chdir
|
@@ -72,7 +73,7 @@ module HerokuMongoBackup
|
|
72
73
|
end
|
73
74
|
end
|
74
75
|
|
75
|
-
def
|
76
|
+
def db_connect
|
76
77
|
uri = URI.parse(@url)
|
77
78
|
connection = ::Mongo::Connection.new(uri.host, uri.port)
|
78
79
|
@db = connection.db(uri.path.gsub(/^\//, ''))
|
@@ -80,8 +81,6 @@ module HerokuMongoBackup
|
|
80
81
|
end
|
81
82
|
|
82
83
|
def s3_connect
|
83
|
-
require 's3'
|
84
|
-
|
85
84
|
bucket = ENV['S3_BUCKET']
|
86
85
|
|
87
86
|
access_key_id = ENV['S3_KEY_ID']
|
@@ -94,22 +93,18 @@ module HerokuMongoBackup
|
|
94
93
|
secret_access_key = ENV['S3_SECRET']
|
95
94
|
end
|
96
95
|
|
97
|
-
|
98
|
-
:secret_access_key => secret_access_key)
|
99
|
-
@bucket = service.buckets.find(bucket)
|
96
|
+
@bucket = HerokuMongoBackup::s3_connect(bucket, access_key_id, secret_access_key)
|
100
97
|
end
|
101
98
|
|
102
99
|
def s3_upload
|
103
|
-
|
104
|
-
object.content = open(@file_name)
|
105
|
-
object.save
|
100
|
+
HerokuMongoBackup::s3_upload(@bucket, @file_name)
|
106
101
|
end
|
107
102
|
|
108
103
|
def s3_download
|
109
104
|
open(@file_name, 'w') do |file|
|
110
|
-
|
105
|
+
file_content = HerokuMongoBackup::s3_download(@bucket, @file_name)
|
111
106
|
file.binmode
|
112
|
-
file.write
|
107
|
+
file.write file_content
|
113
108
|
end
|
114
109
|
end
|
115
110
|
|
@@ -137,7 +132,7 @@ module HerokuMongoBackup
|
|
137
132
|
|
138
133
|
puts "Using databased: #{@url}"
|
139
134
|
|
140
|
-
self.
|
135
|
+
self.db_connect
|
141
136
|
self.s3_connect
|
142
137
|
end
|
143
138
|
|
@@ -156,3 +151,4 @@ module HerokuMongoBackup
|
|
156
151
|
end
|
157
152
|
end
|
158
153
|
end
|
154
|
+
|
data/lib/s3_helpers.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 's3'
|
2
|
+
|
3
|
+
if defined?(S3)
|
4
|
+
puts "Using \'s3\' gem as Amazon S3 interface."
|
5
|
+
def HerokuMongoBackup::s3_connect(bucket, key, secret)
|
6
|
+
service = S3::Service.new(:access_key_id => key,
|
7
|
+
:secret_access_key => secret)
|
8
|
+
bucket = service.buckets.find(bucket)
|
9
|
+
return bucket
|
10
|
+
end
|
11
|
+
def HerokuMongoBackup::s3_upload(bucket, filename)
|
12
|
+
object = bucket.objects.build("backups/#{filename}")
|
13
|
+
object.content = open(filename)
|
14
|
+
object.save
|
15
|
+
end
|
16
|
+
def HerokuMongoBackup::s3_download(bucket, filename)
|
17
|
+
object = bucket.objects.find("backups/#{filename}")
|
18
|
+
content = object.content(reload=true)
|
19
|
+
|
20
|
+
puts "Backup file:"
|
21
|
+
puts " name: #{filename}"
|
22
|
+
puts " type: #{object.content_type}"
|
23
|
+
puts " size: #{content.size} bytes"
|
24
|
+
puts "\n"
|
25
|
+
|
26
|
+
return content
|
27
|
+
end
|
28
|
+
else
|
29
|
+
require 'aws/s3'
|
30
|
+
|
31
|
+
if defined?(AWS)
|
32
|
+
puts "Using \'aws/s3\' gem as Amazon S3 interface."
|
33
|
+
def HerokuMongoBackup::s3_connect(bucket, key, secret)
|
34
|
+
AWS::S3::Base.establish_connection!(:access_key_id => key,
|
35
|
+
:secret_access_key => secret)
|
36
|
+
puts Service.buckets
|
37
|
+
end
|
38
|
+
def HerokuMongoBackup::s3_upload(bucket, filename)
|
39
|
+
end
|
40
|
+
def HerokuMongoBackup::s3_download(bucket, filename)
|
41
|
+
end
|
42
|
+
else
|
43
|
+
puts "Please include 's3' or 'aws/s3' gem in applications Gemfile."
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heroku-mongo-backup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,20 +11,9 @@ bindir: bin
|
|
11
11
|
cert_chain: []
|
12
12
|
date: 2012-01-09 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: s3
|
16
|
-
requirement: &70298259717780 !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 0.3.11
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: *70298259717780
|
25
14
|
- !ruby/object:Gem::Dependency
|
26
15
|
name: rspec
|
27
|
-
requirement: &
|
16
|
+
requirement: &70113567299480 !ruby/object:Gem::Requirement
|
28
17
|
none: false
|
29
18
|
requirements:
|
30
19
|
- - ! '>='
|
@@ -32,10 +21,10 @@ dependencies:
|
|
32
21
|
version: '0'
|
33
22
|
type: :development
|
34
23
|
prerelease: false
|
35
|
-
version_requirements: *
|
24
|
+
version_requirements: *70113567299480
|
36
25
|
- !ruby/object:Gem::Dependency
|
37
26
|
name: mocha
|
38
|
-
requirement: &
|
27
|
+
requirement: &70113567298360 !ruby/object:Gem::Requirement
|
39
28
|
none: false
|
40
29
|
requirements:
|
41
30
|
- - ! '>='
|
@@ -43,10 +32,10 @@ dependencies:
|
|
43
32
|
version: '0'
|
44
33
|
type: :development
|
45
34
|
prerelease: false
|
46
|
-
version_requirements: *
|
35
|
+
version_requirements: *70113567298360
|
47
36
|
- !ruby/object:Gem::Dependency
|
48
37
|
name: crack
|
49
|
-
requirement: &
|
38
|
+
requirement: &70113567297800 !ruby/object:Gem::Requirement
|
50
39
|
none: false
|
51
40
|
requirements:
|
52
41
|
- - ! '>='
|
@@ -54,7 +43,7 @@ dependencies:
|
|
54
43
|
version: '0'
|
55
44
|
type: :development
|
56
45
|
prerelease: false
|
57
|
-
version_requirements: *
|
46
|
+
version_requirements: *70113567297800
|
58
47
|
description: Rake task for backing up mongo database on heroku and push it to S3.
|
59
48
|
Library can be used as rake task or be easily integrated into daily cron job.
|
60
49
|
email: a@alexkravets.com
|
@@ -64,6 +53,7 @@ extra_rdoc_files: []
|
|
64
53
|
files:
|
65
54
|
- lib/heroku_mongo_backup/railtie.rb
|
66
55
|
- lib/heroku_mongo_backup.rb
|
56
|
+
- lib/s3_helpers.rb
|
67
57
|
- lib/tasks/heroku_mongo_backup.rake
|
68
58
|
homepage: https://github.com/alexkravets/heroku-mongo-backup
|
69
59
|
licenses: []
|