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 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