easy_backup 0.0.7 → 0.0.8
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/easy_backup.gemspec +1 -3
- data/lib/easy_backup.rb +6 -3
- data/lib/easy_backup/resources/file_system.rb +6 -6
- data/lib/easy_backup/resources/postgres.rb +21 -14
- data/lib/easy_backup/version.rb +1 -1
- data/spec/file_system_spec.rb +18 -0
- data/spec/postgres_spec.rb +41 -0
- data/spec/spec_helper.rb +0 -1
- metadata +26 -15
data/easy_backup.gemspec
CHANGED
|
@@ -21,9 +21,7 @@ Gem::Specification.new do |s|
|
|
|
21
21
|
s.add_dependency 'rubyzip'
|
|
22
22
|
s.add_dependency 'net-sftp'
|
|
23
23
|
s.add_dependency 'rufus-scheduler'
|
|
24
|
-
|
|
25
|
-
#s.add_dependency 'i18n'
|
|
26
|
-
#s.add_dependency 'chronic'
|
|
24
|
+
s.add_dependency 'chronic'
|
|
27
25
|
|
|
28
26
|
s.add_development_dependency 'json'
|
|
29
27
|
s.add_development_dependency 'sequel'
|
data/lib/easy_backup.rb
CHANGED
|
@@ -3,16 +3,19 @@ require 'zip/zip'
|
|
|
3
3
|
require 'net/sftp'
|
|
4
4
|
require 'open3'
|
|
5
5
|
require 'rufus-scheduler'
|
|
6
|
-
|
|
7
|
-
require 'easy_backup/configuration'
|
|
8
|
-
require 'easy_backup/specification'
|
|
6
|
+
require 'chronic'
|
|
9
7
|
|
|
10
8
|
require 'easy_backup/resources/file_system'
|
|
11
9
|
require 'easy_backup/resources/sftp'
|
|
12
10
|
require 'easy_backup/resources/postgres'
|
|
13
11
|
|
|
12
|
+
require 'easy_backup/configuration'
|
|
13
|
+
require 'easy_backup/specification'
|
|
14
|
+
|
|
14
15
|
require 'easy_backup/extension/net_sftp_session'
|
|
15
16
|
|
|
17
|
+
include EasyBackup::Resources
|
|
18
|
+
|
|
16
19
|
module EasyBackup
|
|
17
20
|
|
|
18
21
|
def self.configuration
|
|
@@ -26,11 +26,11 @@ module EasyBackup
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def zip(file_name)
|
|
29
|
-
@
|
|
29
|
+
@zip = file_name
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def zip_file
|
|
33
|
-
|
|
33
|
+
@zip_file || update_zip_file
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def save(resource)
|
|
@@ -47,7 +47,7 @@ module EasyBackup
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def send_to(*storages)
|
|
50
|
-
if
|
|
50
|
+
if update_zip_file
|
|
51
51
|
EasyBackup.configuration.logger.info "[EasyBackup] Zip #{zip_file}"
|
|
52
52
|
FileUtils.mkpath File.dirname(zip_file) unless Dir.exist? File.dirname(zip_file)
|
|
53
53
|
ZipFile.open(zip_file, ZipFile::CREATE) do |zip|
|
|
@@ -75,9 +75,9 @@ module EasyBackup
|
|
|
75
75
|
|
|
76
76
|
private
|
|
77
77
|
|
|
78
|
-
def
|
|
79
|
-
return nil unless
|
|
80
|
-
"#{EasyBackup.configuration.tmp_path}/zip/#{
|
|
78
|
+
def update_zip_file
|
|
79
|
+
return nil unless @zip
|
|
80
|
+
@zip_file = "#{EasyBackup.configuration.tmp_path}/zip/#{@zip.is_a?(Proc) ? @zip.call : @zip}"
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
end
|
|
@@ -29,36 +29,30 @@ module EasyBackup
|
|
|
29
29
|
|
|
30
30
|
def dump_file(file_name=nil)
|
|
31
31
|
if file_name
|
|
32
|
-
@
|
|
32
|
+
@dump = file_name
|
|
33
33
|
else
|
|
34
|
-
|
|
35
|
-
path_to(@dump_file.is_a?(Proc) ? @dump_file.call : @dump_file)
|
|
36
|
-
else
|
|
37
|
-
path_to "#{database}_#{Time.now.strftime('%Y%m%d%H%M%S')}.sql"
|
|
38
|
-
end
|
|
34
|
+
@dump_file || update_dump_file
|
|
39
35
|
end
|
|
40
36
|
end
|
|
41
37
|
|
|
42
|
-
def zip_file
|
|
43
|
-
|
|
44
|
-
@zip_file = file_name
|
|
45
|
-
else
|
|
46
|
-
path_to(@zip_file.is_a?(Proc) ? @zip_file.call : @zip_file)
|
|
47
|
-
end
|
|
38
|
+
def zip_file
|
|
39
|
+
@zip_file || update_zip_file
|
|
48
40
|
end
|
|
49
41
|
|
|
50
42
|
def zip
|
|
51
|
-
|
|
43
|
+
@zip = lambda { "#{File.basename(dump_file, '.*')}.zip" }
|
|
52
44
|
end
|
|
53
45
|
|
|
54
46
|
def send_to(*storages)
|
|
47
|
+
update_dump_file
|
|
48
|
+
|
|
55
49
|
FileUtils.mkpath File.dirname(dump_file) unless Dir.exist? File.dirname(dump_file)
|
|
56
50
|
|
|
57
51
|
EasyBackup.configuration.logger.info "[EasyBackup] Dump postgres://#{username}:*****@#{host}:#{port}/#{database} to #{dump_file}"
|
|
58
52
|
|
|
59
53
|
Open3.popen3 "pg_dump -h #{host} -p #{port} -U #{username} #{database} > #{dump_file}" do |i, o, e, t|
|
|
60
54
|
if t.value.success?
|
|
61
|
-
if
|
|
55
|
+
if update_zip_file
|
|
62
56
|
EasyBackup.configuration.logger.info "[EasyBackup] Zip #{dump_file} to #{zip_file}"
|
|
63
57
|
ZipFile.open(zip_file, ZipFile::CREATE) do |zip|
|
|
64
58
|
zip.add File.basename(dump_file), dump_file
|
|
@@ -76,6 +70,19 @@ module EasyBackup
|
|
|
76
70
|
|
|
77
71
|
private
|
|
78
72
|
|
|
73
|
+
def update_dump_file
|
|
74
|
+
if @dump
|
|
75
|
+
@dump_file = path_to(@dump.is_a?(Proc) ? @dump.call : @dump)
|
|
76
|
+
else
|
|
77
|
+
@dump_file = path_to "#{database}_#{Time.now.strftime('%Y%m%d%H%M%S')}.sql"
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def update_zip_file
|
|
82
|
+
return nil unless @zip
|
|
83
|
+
@zip_file = path_to(@zip.call)
|
|
84
|
+
end
|
|
85
|
+
|
|
79
86
|
def path_to(file_name)
|
|
80
87
|
return nil unless file_name
|
|
81
88
|
"#{EasyBackup.configuration.tmp_path}/pg_dump/#{file_name}"
|
data/lib/easy_backup/version.rb
CHANGED
data/spec/file_system_spec.rb
CHANGED
|
@@ -131,6 +131,24 @@ describe FileSystem do
|
|
|
131
131
|
storage.received.should eq [fs.zip_file]
|
|
132
132
|
end
|
|
133
133
|
|
|
134
|
+
it 'Zipped with lambda expression' do
|
|
135
|
+
sample_file = "#{DATA_PATH}/sample.json"
|
|
136
|
+
sample_folder = "#{DATA_PATH}/txt"
|
|
137
|
+
|
|
138
|
+
fs = FileSystem.new do
|
|
139
|
+
file sample_file
|
|
140
|
+
folder sample_folder
|
|
141
|
+
zip lambda { "sample_#{Time.now.strftime('%Y%m%d%H%M%S')}.zip" }
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
storage = FakeStorage.new
|
|
145
|
+
|
|
146
|
+
fs.send_to storage
|
|
147
|
+
|
|
148
|
+
sleep 1
|
|
149
|
+
|
|
150
|
+
storage.received.should eq [fs.zip_file]
|
|
151
|
+
end
|
|
134
152
|
end
|
|
135
153
|
|
|
136
154
|
end
|
data/spec/postgres_spec.rb
CHANGED
|
@@ -66,6 +66,26 @@ describe Postgres do
|
|
|
66
66
|
storage.received.should eq ["#{EasyBackup.configuration.tmp_path}/pg_dump/backup.sql"]
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
+
it 'Dump with lambda expression' do
|
|
70
|
+
db = PostgresHelper.configuration
|
|
71
|
+
|
|
72
|
+
pg = Postgres.new do
|
|
73
|
+
host db['host']
|
|
74
|
+
database db['database']
|
|
75
|
+
port db['port']
|
|
76
|
+
username db['username']
|
|
77
|
+
password db['password']
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
storage = FakeStorage.new
|
|
81
|
+
|
|
82
|
+
pg.send_to storage
|
|
83
|
+
|
|
84
|
+
sleep 1
|
|
85
|
+
|
|
86
|
+
storage.received.should eq [pg.dump_file]
|
|
87
|
+
end
|
|
88
|
+
|
|
69
89
|
it 'Zip after dump' do
|
|
70
90
|
db = PostgresHelper.configuration
|
|
71
91
|
|
|
@@ -86,6 +106,27 @@ describe Postgres do
|
|
|
86
106
|
storage.received.should eq ["#{EasyBackup.configuration.tmp_path}/pg_dump/backup.zip"]
|
|
87
107
|
end
|
|
88
108
|
|
|
109
|
+
it 'Zip with lambda expression' do
|
|
110
|
+
db = PostgresHelper.configuration
|
|
111
|
+
|
|
112
|
+
pg = Postgres.new do
|
|
113
|
+
host db['host']
|
|
114
|
+
database db['database']
|
|
115
|
+
port db['port']
|
|
116
|
+
username db['username']
|
|
117
|
+
password db['password']
|
|
118
|
+
zip
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
storage = FakeStorage.new
|
|
122
|
+
|
|
123
|
+
pg.send_to storage
|
|
124
|
+
|
|
125
|
+
sleep 1
|
|
126
|
+
|
|
127
|
+
storage.received.should eq [pg.zip_file]
|
|
128
|
+
end
|
|
129
|
+
|
|
89
130
|
end
|
|
90
131
|
|
|
91
132
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: easy_backup
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.8
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -13,7 +13,7 @@ date: 2012-11-01 00:00:00.000000000 Z
|
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rubyzip
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &26623260 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: '0'
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *26623260
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: net-sftp
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &26622996 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ! '>='
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: '0'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *26622996
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: rufus-scheduler
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &26622708 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,10 +43,21 @@ dependencies:
|
|
|
43
43
|
version: '0'
|
|
44
44
|
type: :runtime
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *26622708
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
48
|
+
name: chronic
|
|
49
|
+
requirement: &26622408 !ruby/object:Gem::Requirement
|
|
50
|
+
none: false
|
|
51
|
+
requirements:
|
|
52
|
+
- - ! '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
type: :runtime
|
|
56
|
+
prerelease: false
|
|
57
|
+
version_requirements: *26622408
|
|
47
58
|
- !ruby/object:Gem::Dependency
|
|
48
59
|
name: json
|
|
49
|
-
requirement: &
|
|
60
|
+
requirement: &26622072 !ruby/object:Gem::Requirement
|
|
50
61
|
none: false
|
|
51
62
|
requirements:
|
|
52
63
|
- - ! '>='
|
|
@@ -54,10 +65,10 @@ dependencies:
|
|
|
54
65
|
version: '0'
|
|
55
66
|
type: :development
|
|
56
67
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *26622072
|
|
58
69
|
- !ruby/object:Gem::Dependency
|
|
59
70
|
name: sequel
|
|
60
|
-
requirement: &
|
|
71
|
+
requirement: &26621712 !ruby/object:Gem::Requirement
|
|
61
72
|
none: false
|
|
62
73
|
requirements:
|
|
63
74
|
- - ! '>='
|
|
@@ -65,10 +76,10 @@ dependencies:
|
|
|
65
76
|
version: '0'
|
|
66
77
|
type: :development
|
|
67
78
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
79
|
+
version_requirements: *26621712
|
|
69
80
|
- !ruby/object:Gem::Dependency
|
|
70
81
|
name: pg
|
|
71
|
-
requirement: &
|
|
82
|
+
requirement: &26621316 !ruby/object:Gem::Requirement
|
|
72
83
|
none: false
|
|
73
84
|
requirements:
|
|
74
85
|
- - ! '>='
|
|
@@ -76,10 +87,10 @@ dependencies:
|
|
|
76
87
|
version: '0'
|
|
77
88
|
type: :development
|
|
78
89
|
prerelease: false
|
|
79
|
-
version_requirements: *
|
|
90
|
+
version_requirements: *26621316
|
|
80
91
|
- !ruby/object:Gem::Dependency
|
|
81
92
|
name: rspec
|
|
82
|
-
requirement: &
|
|
93
|
+
requirement: &26620752 !ruby/object:Gem::Requirement
|
|
83
94
|
none: false
|
|
84
95
|
requirements:
|
|
85
96
|
- - ! '>='
|
|
@@ -87,7 +98,7 @@ dependencies:
|
|
|
87
98
|
version: '0'
|
|
88
99
|
type: :development
|
|
89
100
|
prerelease: false
|
|
90
|
-
version_requirements: *
|
|
101
|
+
version_requirements: *26620752
|
|
91
102
|
description: Simple DSL to program backups
|
|
92
103
|
email:
|
|
93
104
|
- gabynaiman@gmail.com
|