astrails-safe 0.2.4 → 0.2.5
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.markdown +8 -4
- data/VERSION.yml +1 -1
- data/examples/integration/archive_integration_example.rb +4 -1
- data/examples/unit/archive_example.rb +1 -1
- data/examples/unit/config_example.rb +29 -0
- data/examples/unit/local_example.rb +3 -3
- data/examples/unit/s3_example.rb +5 -5
- data/lib/astrails/safe/archive.rb +1 -1
- data/lib/astrails/safe/config/node.rb +16 -6
- data/templates/script.rb +10 -2
- metadata +2 -2
data/README.markdown
CHANGED
@@ -148,8 +148,8 @@ Example configuration
|
|
148
148
|
end
|
149
149
|
|
150
150
|
keep do
|
151
|
-
local
|
152
|
-
s3
|
151
|
+
local 20
|
152
|
+
s3 30
|
153
153
|
end
|
154
154
|
|
155
155
|
mysqldump do
|
@@ -162,7 +162,10 @@ Example configuration
|
|
162
162
|
database :blog
|
163
163
|
database :servershape
|
164
164
|
database :astrails_com
|
165
|
-
database :secret_project_com
|
165
|
+
database :secret_project_com do
|
166
|
+
skip_tables "foo"
|
167
|
+
skip_tables ["bar", "baz"]
|
168
|
+
end
|
166
169
|
|
167
170
|
end
|
168
171
|
|
@@ -189,7 +192,8 @@ Example configuration
|
|
189
192
|
|
190
193
|
archive "blog-astrails-com" do
|
191
194
|
files "/var/www/blog.astrails.com/"
|
192
|
-
exclude
|
195
|
+
exclude "/var/www/blog.astrails.com/log"
|
196
|
+
exclude "/var/www/blog.astrails.com/tmp"
|
193
197
|
end
|
194
198
|
|
195
199
|
archive "astrails-com" do
|
data/VERSION.yml
CHANGED
@@ -42,6 +42,7 @@ describe "tar backup" do
|
|
42
42
|
archive :test1 do
|
43
43
|
files src
|
44
44
|
exclude "#{src}/q/w"
|
45
|
+
exclude "#{src}/q/w/e"
|
45
46
|
end
|
46
47
|
end
|
47
48
|
end
|
@@ -74,6 +75,8 @@ describe "tar backup" do
|
|
74
75
|
it "should only include qwe 1 and 2 (no 3)" do
|
75
76
|
File.exists?("#{@test}/qwe1").should be_true
|
76
77
|
File.exists?("#{@test}/q/qwe2").should be_true
|
78
|
+
File.exists?("#{@test}/q/w/qwe3").should be_false
|
79
|
+
File.exists?("#{@test}/q/w/e/qwe4").should be_false
|
77
80
|
end
|
78
81
|
|
79
82
|
it "should preserve file content" do
|
@@ -83,4 +86,4 @@ describe "tar backup" do
|
|
83
86
|
end
|
84
87
|
end
|
85
88
|
|
86
|
-
end
|
89
|
+
end
|
@@ -181,4 +181,33 @@ describe Astrails::Safe::Config do
|
|
181
181
|
|
182
182
|
config.to_hash.should == expected
|
183
183
|
end
|
184
|
+
|
185
|
+
it "should make an array from multivalues" do
|
186
|
+
config = Astrails::Safe::Config::Node.new do
|
187
|
+
skip_tables "a"
|
188
|
+
skip_tables "b"
|
189
|
+
files "/foo"
|
190
|
+
files "/bar"
|
191
|
+
exclude "/foo/bar"
|
192
|
+
exclude "/foo/bar/baz"
|
193
|
+
end
|
194
|
+
|
195
|
+
expected = {
|
196
|
+
"skip_tables" => ["a", "b"],
|
197
|
+
"files" => ["/foo", "/bar"],
|
198
|
+
"exclude" => ["/foo/bar", "/foo/bar/baz"],
|
199
|
+
}
|
200
|
+
|
201
|
+
config.to_hash.should == expected
|
202
|
+
end
|
203
|
+
|
204
|
+
it "should raise error on key duplication" do
|
205
|
+
proc do
|
206
|
+
Astrails::Safe::Config::Node.new do
|
207
|
+
path "foo"
|
208
|
+
path "bar"
|
209
|
+
end
|
210
|
+
end.should raise_error(ArgumentError, "duplicate value for 'path'")
|
211
|
+
end
|
212
|
+
|
184
213
|
end
|
@@ -87,21 +87,21 @@ describe Astrails::Safe::Local do
|
|
87
87
|
|
88
88
|
describe :cleanup do
|
89
89
|
before(:each) do
|
90
|
-
@local = local
|
91
90
|
@files = [4,1,3,2].to_a.map { |i| "/mysqldump~blog~NoW/qweqwe.#{i}" }
|
92
|
-
stub(Dir).[]("/mysqldump~blog~NoW/qweqwe.*") {@files}
|
93
91
|
stub(File).file?(anything) {true}
|
94
92
|
stub(File).size(anything) {1}
|
95
93
|
stub(File).unlink
|
96
94
|
end
|
97
95
|
|
98
96
|
it "should check [:keep, :local]" do
|
99
|
-
@local.
|
97
|
+
@local = local(def_config.merge(:keep => {}))
|
100
98
|
dont_allow(Dir).[]
|
101
99
|
@local.send :cleanup
|
102
100
|
end
|
103
101
|
|
104
102
|
it "should delete extra files" do
|
103
|
+
@local = local
|
104
|
+
mock(Dir).[]("/mysqldump~blog~NoW/qweqwe.*") {@files}
|
105
105
|
mock(File).unlink("/mysqldump~blog~NoW/qweqwe.1")
|
106
106
|
mock(File).unlink("/mysqldump~blog~NoW/qweqwe.2")
|
107
107
|
@local.send :cleanup
|
data/examples/unit/s3_example.rb
CHANGED
@@ -44,7 +44,7 @@ describe Astrails::Safe::S3 do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
it "should check [:keep, :s3]" do
|
47
|
-
@s3.config[:keep][
|
47
|
+
@s3.config[:keep].data["s3"] = nil
|
48
48
|
dont_allow(@s3.backup).filename
|
49
49
|
@s3.send :cleanup
|
50
50
|
end
|
@@ -67,17 +67,17 @@ describe Astrails::Safe::S3 do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should be false if bucket is missing" do
|
70
|
-
@s3.config[:s3][
|
70
|
+
@s3.config[:s3].data["bucket"] = nil
|
71
71
|
@s3.should_not be_active
|
72
72
|
end
|
73
73
|
|
74
74
|
it "should be false if key is missing" do
|
75
|
-
@s3.config[:s3][
|
75
|
+
@s3.config[:s3].data["key"] = nil
|
76
76
|
@s3.should_not be_active
|
77
77
|
end
|
78
78
|
|
79
79
|
it "should be false if secret is missing" do
|
80
|
-
@s3.config[:s3][
|
80
|
+
@s3.config[:s3].data["secret"] = nil
|
81
81
|
@s3.should_not be_active
|
82
82
|
end
|
83
83
|
end
|
@@ -87,7 +87,7 @@ describe Astrails::Safe::S3 do
|
|
87
87
|
@s3 = s3
|
88
88
|
end
|
89
89
|
it "should use s3/path 1st" do
|
90
|
-
@s3.config[:s3][
|
90
|
+
@s3.config[:s3].data["path"] = "s3_path"
|
91
91
|
@s3.config[:local] = {:path => "local_path"}
|
92
92
|
@s3.send(:path).should == "s3_path"
|
93
93
|
end
|
@@ -4,6 +4,7 @@ module Astrails
|
|
4
4
|
module Config
|
5
5
|
class Node
|
6
6
|
attr_reader :parent
|
7
|
+
attr_reader :data
|
7
8
|
def initialize(parent = nil, data = {}, &block)
|
8
9
|
@parent, @data = parent, {}
|
9
10
|
data.each { |k, v| self[k] = v }
|
@@ -26,14 +27,23 @@ module Astrails
|
|
26
27
|
end
|
27
28
|
alias :[] :find
|
28
29
|
|
30
|
+
MULTIVALUES = %w/skip_tables exclude files/
|
29
31
|
def set(key, value, &block)
|
30
|
-
@data[key.to_s]
|
31
|
-
if value.is_a?(Hash)
|
32
|
-
|
32
|
+
if @data[key.to_s]
|
33
|
+
raise(ArgumentError, "duplicate value for '#{key}'") if value.is_a?(Hash) || !MULTIVALUES.include?(key.to_s)
|
34
|
+
end
|
35
|
+
|
36
|
+
if value.is_a?(Hash)
|
37
|
+
@data[key.to_s] = Node.new(self, value, &block)
|
38
|
+
else
|
39
|
+
raise(ArgumentError, "#{key}: no block supported for simple values") if block
|
40
|
+
if @data[key.to_s]
|
41
|
+
@data[key.to_s] = @data[key.to_s].to_a + value.to_a
|
33
42
|
else
|
34
|
-
|
35
|
-
value
|
43
|
+
@data[key.to_s] = value
|
36
44
|
end
|
45
|
+
value
|
46
|
+
end
|
37
47
|
end
|
38
48
|
alias :[]= :set
|
39
49
|
|
@@ -63,4 +73,4 @@ module Astrails
|
|
63
73
|
end
|
64
74
|
end
|
65
75
|
end
|
66
|
-
end
|
76
|
+
end
|
data/templates/script.rb
CHANGED
@@ -74,8 +74,12 @@ safe do
|
|
74
74
|
# gpg do
|
75
75
|
# password "custom-production-pass"
|
76
76
|
# end
|
77
|
-
|
78
|
-
#
|
77
|
+
# # skip those tables during backup
|
78
|
+
# # you can pass an array
|
79
|
+
# skip_tables [:logger_exceptions, :request_logs]
|
80
|
+
# # or pass them all separately
|
81
|
+
# skip_tables :test1
|
82
|
+
# skip_tables :test2
|
79
83
|
# end
|
80
84
|
|
81
85
|
end
|
@@ -99,12 +103,16 @@ safe do
|
|
99
103
|
# archive "git-repositories" do
|
100
104
|
# # files and directories to backup
|
101
105
|
# files "/home/git/repositories"
|
106
|
+
# # can have more then one 'files' lines or/and use an array
|
107
|
+
# files ["/home/dev/work/foo", "/home/dev/work/bar"]
|
102
108
|
# end
|
103
109
|
|
104
110
|
# archive "etc-files" do
|
105
111
|
# files "/etc"
|
106
112
|
# # exlude those files/directories
|
107
113
|
# exclude "/etc/puppet/other"
|
114
|
+
# # can have multiple 'exclude' lines or/and use an array
|
115
|
+
# exclude ["/etc/tmp/a", "/etc/tmp/b"]
|
108
116
|
# end
|
109
117
|
|
110
118
|
# archive "dot-configs" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: astrails-safe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Astrails Ltd.
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-10-
|
13
|
+
date: 2009-10-20 00:00:00 +02:00
|
14
14
|
default_executable: astrails-safe
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|