heroku-mongo-backup 0.3.2 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/heroku_mongo_backup.rb +41 -5
  2. metadata +13 -12
@@ -7,6 +7,7 @@ require 'zlib'
7
7
  require 'uri'
8
8
  require 'yaml'
9
9
  require 'rubygems'
10
+ require 'net/ftp'
10
11
 
11
12
  module HerokuMongoBackup
12
13
  require 'heroku_mongo_backup/railtie' if defined?(Rails)
@@ -79,7 +80,25 @@ module HerokuMongoBackup
79
80
  @db = connection.db(uri.path.gsub(/^\//, ''))
80
81
  @db.authenticate(uri.user, uri.password) if uri.user
81
82
  end
82
-
83
+
84
+ def ftp_connect
85
+ @ftp = Net::FTP.new(ENV['FTP_HOST'])
86
+ @ftp.passive = true
87
+ @ftp.login(ENV['FTP_USERNAME'], ENV['FTP_PASSWORD'])
88
+ end
89
+
90
+ def ftp_upload
91
+ @ftp.putbinaryfile(@file_name)
92
+ end
93
+
94
+ def ftp_download
95
+ open(@file_name, 'w') do |file|
96
+ file_content = @ftp.getbinaryfile(@file_name)
97
+ file.binmode
98
+ file.write file_content
99
+ end
100
+ end
101
+
83
102
  def s3_connect
84
103
  bucket = ENV['S3_BACKUPS_BUCKET']
85
104
  if bucket.nil?
@@ -136,20 +155,37 @@ module HerokuMongoBackup
136
155
  puts "Using databased: #{@url}"
137
156
 
138
157
  self.db_connect
139
- self.s3_connect
158
+
159
+ if ENV['UPLOAD_TYPE'] == 'ftp'
160
+ self.ftp_connect
161
+ else
162
+ self.s3_connect
163
+ end
140
164
  end
141
165
 
142
166
  def backup
143
167
  self.chdir
144
168
  self.store
145
- self.s3_upload
146
- end
147
169
 
170
+ if ENV['UPLOAD_TYPE'] == 'ftp'
171
+ self.ftp_upload
172
+ @ftp.close
173
+ else
174
+ self.s3_upload
175
+ end
176
+ end
177
+
148
178
  def restore file_name
149
179
  @file_name = file_name
150
180
 
151
181
  self.chdir
152
- self.s3_download
182
+
183
+ if ENV['UPLOAD_TYPE'] == 'ftp'
184
+ self.ftp_download
185
+ @ftp.close
186
+ else
187
+ self.s3_download
188
+ end
153
189
  self.load
154
190
  end
155
191
  end
metadata CHANGED
@@ -1,19 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku-mongo-backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Alex Kraves
8
+ - Alex Kravets
9
+ - matyi
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2012-02-27 00:00:00.000000000Z
13
+ date: 2012-05-01 00:00:00.000000000Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: rspec
16
- requirement: &70311073645040 !ruby/object:Gem::Requirement
17
+ requirement: &70361846274660 !ruby/object:Gem::Requirement
17
18
  none: false
18
19
  requirements:
19
20
  - - ! '>='
@@ -21,10 +22,10 @@ dependencies:
21
22
  version: '0'
22
23
  type: :development
23
24
  prerelease: false
24
- version_requirements: *70311073645040
25
+ version_requirements: *70361846274660
25
26
  - !ruby/object:Gem::Dependency
26
27
  name: mocha
27
- requirement: &70311073644180 !ruby/object:Gem::Requirement
28
+ requirement: &70361846273820 !ruby/object:Gem::Requirement
28
29
  none: false
29
30
  requirements:
30
31
  - - ! '>='
@@ -32,10 +33,10 @@ dependencies:
32
33
  version: '0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70311073644180
36
+ version_requirements: *70361846273820
36
37
  - !ruby/object:Gem::Dependency
37
38
  name: crack
38
- requirement: &70311073642720 !ruby/object:Gem::Requirement
39
+ requirement: &70361846272260 !ruby/object:Gem::Requirement
39
40
  none: false
40
41
  requirements:
41
42
  - - ! '>='
@@ -43,9 +44,9 @@ dependencies:
43
44
  version: '0'
44
45
  type: :development
45
46
  prerelease: false
46
- version_requirements: *70311073642720
47
- description: Rake task for backing up mongo database on heroku and push it to S3.
48
- Library can be used as rake task or be easily integrated into daily cron job.
47
+ version_requirements: *70361846272260
48
+ description: Rake task for backing up mongo database on heroku and push it to S3 or
49
+ FTP. Library can be used as rake task or be easily integrated into daily cron job.
49
50
  email: santyor@gmail.com
50
51
  executables: []
51
52
  extensions: []
@@ -79,5 +80,5 @@ rubygems_version: 1.8.6
79
80
  signing_key:
80
81
  specification_version: 3
81
82
  summary: Rake task backups mongo database on Heroku and push gzipped file to Amazon
82
- S3.
83
+ S3 or FTP.
83
84
  test_files: []