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.
@@ -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 connect
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
- service = S3::Service.new(:access_key_id => access_key_id,
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
- object = @bucket.objects.build("backups/#{@file_name}")
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
- object = @bucket.objects.find("backups/#{@file_name}")
105
+ file_content = HerokuMongoBackup::s3_download(@bucket, @file_name)
111
106
  file.binmode
112
- file.write object.content
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.connect
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
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: &70298259717240 !ruby/object:Gem::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: *70298259717240
24
+ version_requirements: *70113567299480
36
25
  - !ruby/object:Gem::Dependency
37
26
  name: mocha
38
- requirement: &70298259716620 !ruby/object:Gem::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: *70298259716620
35
+ version_requirements: *70113567298360
47
36
  - !ruby/object:Gem::Dependency
48
37
  name: crack
49
- requirement: &70298259716100 !ruby/object:Gem::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: *70298259716100
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: []