backup 3.0.26 → 3.0.27
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/README.md +1 -3
- data/lib/backup/cli/helpers.rb +2 -0
- data/lib/backup/cli/utility.rb +4 -4
- data/lib/backup/compressor/bzip2.rb +8 -4
- data/lib/backup/compressor/gzip.rb +8 -4
- data/lib/backup/configuration/helpers.rb +30 -38
- data/lib/backup/database/mongodb.rb +2 -1
- data/lib/backup/database/mysql.rb +2 -1
- data/lib/backup/database/postgresql.rb +2 -1
- data/lib/backup/database/redis.rb +2 -1
- data/lib/backup/database/riak.rb +2 -1
- data/lib/backup/encryptor/gpg.rb +717 -37
- data/lib/backup/syncer/cloud/base.rb +2 -2
- data/lib/backup/version.rb +1 -1
- data/spec-live/backups/config.rb +14 -84
- data/spec-live/backups/config.yml.template +3 -0
- data/spec-live/backups/models.rb +184 -0
- data/spec-live/encryptor/gpg_keys.rb +239 -0
- data/spec-live/encryptor/gpg_spec.rb +287 -0
- data/spec-live/notifier/mail_spec.rb +58 -22
- data/spec-live/spec_helper.rb +69 -3
- data/spec/cli/helpers_spec.rb +25 -25
- data/spec/cli/utility_spec.rb +6 -3
- data/spec/compressor/bzip2_spec.rb +20 -41
- data/spec/compressor/gzip_spec.rb +20 -41
- data/spec/configuration/helpers_spec.rb +94 -253
- data/spec/database/mongodb_spec.rb +9 -10
- data/spec/database/mysql_spec.rb +9 -10
- data/spec/database/postgresql_spec.rb +9 -10
- data/spec/database/redis_spec.rb +9 -10
- data/spec/database/riak_spec.rb +9 -10
- data/spec/encryptor/gpg_spec.rb +830 -71
- data/spec/storage/dropbox_spec.rb +24 -36
- data/spec/syncer/cloud/base_spec.rb +1 -1
- data/templates/cli/utility/encryptor/gpg +16 -1
- metadata +63 -64
@@ -396,14 +396,16 @@ describe Backup::Storage::Dropbox do
|
|
396
396
|
end
|
397
397
|
|
398
398
|
describe '#email' do
|
399
|
+
before do
|
400
|
+
Backup::Logger.expects(:warn).with do |err|
|
401
|
+
err.message.should match(
|
402
|
+
"Dropbox#email has been deprecated as of backup v.3.0.17"
|
403
|
+
)
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
399
407
|
context 'when set directly' do
|
400
408
|
it 'should issue a deprecation warning' do
|
401
|
-
Backup::Logger.expects(:warn).with do |err|
|
402
|
-
err.message.should == "ConfigurationError: [DEPRECATION WARNING]\n" +
|
403
|
-
" Backup::Storage::Dropbox.email has been deprecated " +
|
404
|
-
"as of backup v.3.0.17"
|
405
|
-
end
|
406
|
-
|
407
409
|
Backup::Storage::Dropbox.new(model) do |storage|
|
408
410
|
storage.email = 'foo'
|
409
411
|
end
|
@@ -412,12 +414,6 @@ describe Backup::Storage::Dropbox do
|
|
412
414
|
|
413
415
|
context 'when set as a default' do
|
414
416
|
it 'should issue a deprecation warning' do
|
415
|
-
Backup::Logger.expects(:warn).with do |err|
|
416
|
-
err.message.should == "ConfigurationError: [DEPRECATION WARNING]\n" +
|
417
|
-
" Backup::Storage::Dropbox.email has been deprecated " +
|
418
|
-
"as of backup v.3.0.17"
|
419
|
-
end
|
420
|
-
|
421
417
|
Backup::Storage::Dropbox.defaults do |storage|
|
422
418
|
storage.email = 'foo'
|
423
419
|
end
|
@@ -427,14 +423,16 @@ describe Backup::Storage::Dropbox do
|
|
427
423
|
end
|
428
424
|
|
429
425
|
describe '#password' do
|
426
|
+
before do
|
427
|
+
Backup::Logger.expects(:warn).with do |err|
|
428
|
+
err.message.should match(
|
429
|
+
"Dropbox#password has been deprecated as of backup v.3.0.17"
|
430
|
+
)
|
431
|
+
end
|
432
|
+
end
|
433
|
+
|
430
434
|
context 'when set directly' do
|
431
435
|
it 'should issue a deprecation warning' do
|
432
|
-
Backup::Logger.expects(:warn).with do |err|
|
433
|
-
err.message.should == "ConfigurationError: [DEPRECATION WARNING]\n" +
|
434
|
-
" Backup::Storage::Dropbox.password has been deprecated " +
|
435
|
-
"as of backup v.3.0.17"
|
436
|
-
end
|
437
|
-
|
438
436
|
Backup::Storage::Dropbox.new(model) do |storage|
|
439
437
|
storage.password = 'foo'
|
440
438
|
end
|
@@ -443,12 +441,6 @@ describe Backup::Storage::Dropbox do
|
|
443
441
|
|
444
442
|
context 'when set as a default' do
|
445
443
|
it 'should issue a deprecation warning' do
|
446
|
-
Backup::Logger.expects(:warn).with do |err|
|
447
|
-
err.message.should == "ConfigurationError: [DEPRECATION WARNING]\n" +
|
448
|
-
" Backup::Storage::Dropbox.password has been deprecated " +
|
449
|
-
"as of backup v.3.0.17"
|
450
|
-
end
|
451
|
-
|
452
444
|
Backup::Storage::Dropbox.defaults do |storage|
|
453
445
|
storage.password = 'foo'
|
454
446
|
end
|
@@ -458,14 +450,16 @@ describe Backup::Storage::Dropbox do
|
|
458
450
|
end
|
459
451
|
|
460
452
|
describe '#timeout' do
|
453
|
+
before do
|
454
|
+
Backup::Logger.expects(:warn).with do |err|
|
455
|
+
err.message.should match(
|
456
|
+
"Dropbox#timeout has been deprecated as of backup v.3.0.21"
|
457
|
+
)
|
458
|
+
end
|
459
|
+
end
|
460
|
+
|
461
461
|
context 'when set directly' do
|
462
462
|
it 'should issue a deprecation warning' do
|
463
|
-
Backup::Logger.expects(:warn).with do |err|
|
464
|
-
err.message.should == "ConfigurationError: [DEPRECATION WARNING]\n" +
|
465
|
-
" Backup::Storage::Dropbox.timeout has been deprecated " +
|
466
|
-
"as of backup v.3.0.21"
|
467
|
-
end
|
468
|
-
|
469
463
|
Backup::Storage::Dropbox.new(model) do |storage|
|
470
464
|
storage.timeout = 'foo'
|
471
465
|
end
|
@@ -474,12 +468,6 @@ describe Backup::Storage::Dropbox do
|
|
474
468
|
|
475
469
|
context 'when set as a default' do
|
476
470
|
it 'should issue a deprecation warning' do
|
477
|
-
Backup::Logger.expects(:warn).with do |err|
|
478
|
-
err.message.should == "ConfigurationError: [DEPRECATION WARNING]\n" +
|
479
|
-
" Backup::Storage::Dropbox.timeout has been deprecated " +
|
480
|
-
"as of backup v.3.0.21"
|
481
|
-
end
|
482
|
-
|
483
471
|
Backup::Storage::Dropbox.defaults do |storage|
|
484
472
|
storage.timeout = 'foo'
|
485
473
|
end
|
@@ -254,7 +254,7 @@ describe 'Backup::Syncer::Cloud::Base' do
|
|
254
254
|
"\s\sGenerating checksums for '/dir/to/sync'"
|
255
255
|
)
|
256
256
|
sync_context.expects(:`).with(
|
257
|
-
"find /dir/to/sync -print0 | xargs -0 openssl md5 2> /dev/null"
|
257
|
+
"find '/dir/to/sync' -print0 | xargs -0 openssl md5 2> /dev/null"
|
258
258
|
).returns('MD5(tmp/foo)= 0123456789abcdefghijklmnopqrstuv')
|
259
259
|
|
260
260
|
sync_context.send(:local_hashes).should ==
|
@@ -1,12 +1,27 @@
|
|
1
1
|
##
|
2
2
|
# GPG [Encryptor]
|
3
3
|
#
|
4
|
+
# Setting up #keys, as well as #gpg_homedir and #gpg_config,
|
5
|
+
# would be best set in config.rb using Encryptor::GPG.defaults
|
6
|
+
#
|
4
7
|
encrypt_with GPG do |encryption|
|
5
|
-
|
8
|
+
# Setup public keys for #recipients
|
9
|
+
encryption.keys = {}
|
10
|
+
encryption.keys['user@domain.com'] = <<-KEY
|
6
11
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
7
12
|
Version: GnuPG v1.4.11 (Darwin)
|
8
13
|
|
9
14
|
<Your GPG Public Key Here>
|
10
15
|
-----END PGP PUBLIC KEY BLOCK-----
|
11
16
|
KEY
|
17
|
+
|
18
|
+
# Specify mode (:asymmetric, :symmetric or :both)
|
19
|
+
encryption.mode = :both # defaults to :asymmetric
|
20
|
+
|
21
|
+
# Specify recipients from #keys (for :asymmetric encryption)
|
22
|
+
encryption.recipients = ['user@domain.com']
|
23
|
+
|
24
|
+
# Specify passphrase or passphrase_file (for :symmetric encryption)
|
25
|
+
encryption.passphrase = 'a secret'
|
26
|
+
# encryption.passphrase_file = '~/backup_passphrase'
|
12
27
|
end
|
metadata
CHANGED
@@ -1,64 +1,61 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: backup
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 3
|
7
|
-
- 0
|
8
|
-
- 26
|
9
|
-
version: 3.0.26
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.0.27
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Michael van Rooijen
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-11-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: thor
|
22
|
-
|
23
|
-
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 0
|
29
|
-
- 15
|
30
|
-
- 4
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
31
21
|
version: 0.15.4
|
32
22
|
- - <
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
|
35
|
-
- 2
|
36
|
-
version: "2"
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: '2'
|
37
25
|
type: :runtime
|
38
|
-
version_requirements: *id001
|
39
|
-
- !ruby/object:Gem::Dependency
|
40
|
-
name: open4
|
41
26
|
prerelease: false
|
42
|
-
|
43
|
-
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.15.4
|
33
|
+
- - <
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '2'
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: open4
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
44
41
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
segments:
|
47
|
-
- 1
|
48
|
-
- 3
|
49
|
-
- 0
|
42
|
+
- !ruby/object:Gem::Version
|
50
43
|
version: 1.3.0
|
51
44
|
type: :runtime
|
52
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ~>
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: 1.3.0
|
53
52
|
description:
|
54
53
|
email: meskyanichi@gmail.com
|
55
|
-
executables:
|
54
|
+
executables:
|
56
55
|
- backup
|
57
56
|
extensions: []
|
58
|
-
|
59
57
|
extra_rdoc_files: []
|
60
|
-
|
61
|
-
files:
|
58
|
+
files:
|
62
59
|
- .gitignore
|
63
60
|
- .travis.yml
|
64
61
|
- Gemfile
|
@@ -132,8 +129,11 @@ files:
|
|
132
129
|
- spec-live/README
|
133
130
|
- spec-live/backups/config.rb
|
134
131
|
- spec-live/backups/config.yml.template
|
132
|
+
- spec-live/backups/models.rb
|
135
133
|
- spec-live/compressor/custom_spec.rb
|
136
134
|
- spec-live/compressor/gzip_spec.rb
|
135
|
+
- spec-live/encryptor/gpg_keys.rb
|
136
|
+
- spec-live/encryptor/gpg_spec.rb
|
137
137
|
- spec-live/notifier/mail_spec.rb
|
138
138
|
- spec-live/spec_helper.rb
|
139
139
|
- spec-live/storage/dropbox_spec.rb
|
@@ -243,35 +243,34 @@ files:
|
|
243
243
|
- templates/storage/dropbox/authorization_url.erb
|
244
244
|
- templates/storage/dropbox/authorized.erb
|
245
245
|
- templates/storage/dropbox/cache_file_written.erb
|
246
|
-
has_rdoc: true
|
247
246
|
homepage: http://rubygems.org/gems/backup
|
248
247
|
licenses: []
|
249
|
-
|
250
248
|
post_install_message:
|
251
249
|
rdoc_options: []
|
252
|
-
|
253
|
-
require_paths:
|
250
|
+
require_paths:
|
254
251
|
- lib
|
255
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
requirements:
|
264
|
-
- -
|
265
|
-
- !ruby/object:Gem::Version
|
266
|
-
|
267
|
-
- 0
|
268
|
-
version: "0"
|
252
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
253
|
+
none: false
|
254
|
+
requirements:
|
255
|
+
- - ! '>='
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0'
|
258
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
259
|
+
none: false
|
260
|
+
requirements:
|
261
|
+
- - ! '>='
|
262
|
+
- !ruby/object:Gem::Version
|
263
|
+
version: '0'
|
269
264
|
requirements: []
|
270
|
-
|
271
265
|
rubyforge_project:
|
272
|
-
rubygems_version: 1.
|
266
|
+
rubygems_version: 1.8.24
|
273
267
|
signing_key:
|
274
268
|
specification_version: 3
|
275
|
-
summary: Backup is a RubyGem, written for UNIX-like operating systems, that allows
|
269
|
+
summary: Backup is a RubyGem, written for UNIX-like operating systems, that allows
|
270
|
+
you to easily perform backup operations on both your remote and local environments.
|
271
|
+
It provides you with an elegant DSL in Ruby for modeling your backups. Backup has
|
272
|
+
built-in support for various databases, storage protocols/services, syncers, compressors,
|
273
|
+
encryptors and notifiers which you can mix and match. It was built with modularity,
|
274
|
+
extensibility and simplicity in mind.
|
276
275
|
test_files: []
|
277
|
-
|
276
|
+
has_rdoc:
|