heroku-mongo-backup 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|