easy_backup 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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
- #s.add_dependency 'activesupport', '>= 3.0.0'
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
- @zip_file = file_name
29
+ @zip = file_name
30
30
  end
31
31
 
32
32
  def zip_file
33
- zip_path(@zip_file.is_a?(Proc) ? @zip_file.call : @zip_file)
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 zip_file
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 zip_path(file_name)
79
- return nil unless file_name
80
- "#{EasyBackup.configuration.tmp_path}/zip/#{file_name}"
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
- @dump_file = file_name
32
+ @dump = file_name
33
33
  else
34
- if @dump_file
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(file_name=nil)
43
- if file_name
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
- zip_file lambda { "#{File.basename(dump_file, '.*')}.zip" }
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 zip_file
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}"
@@ -1,3 +1,3 @@
1
1
  module EasyBackup
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
@@ -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
@@ -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
@@ -3,7 +3,6 @@ require 'sequel'
3
3
  require 'json'
4
4
 
5
5
  include EasyBackup
6
- include EasyBackup::Resources
7
6
 
8
7
  DATA_PATH = "#{File.dirname(__FILE__)}/files/data"
9
8
 
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.7
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: &21699300 !ruby/object:Gem::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: *21699300
24
+ version_requirements: *26623260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: net-sftp
27
- requirement: &21698880 !ruby/object:Gem::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: *21698880
35
+ version_requirements: *26622996
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rufus-scheduler
38
- requirement: &21698568 !ruby/object:Gem::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: *21698568
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: &21891084 !ruby/object:Gem::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: *21891084
68
+ version_requirements: *26622072
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: sequel
60
- requirement: &21890436 !ruby/object:Gem::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: *21890436
79
+ version_requirements: *26621712
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: pg
71
- requirement: &21889392 !ruby/object:Gem::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: *21889392
90
+ version_requirements: *26621316
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: rspec
82
- requirement: &21888984 !ruby/object:Gem::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: *21888984
101
+ version_requirements: *26620752
91
102
  description: Simple DSL to program backups
92
103
  email:
93
104
  - gabynaiman@gmail.com