keepitsafe 0.1.10 → 0.2.0
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/Gemfile +1 -0
- data/Gemfile.lock +36 -1
- data/VERSION +1 -1
- data/email/report/report.html.erb +107 -0
- data/example/localhost.rb +20 -0
- data/keepitsafe.gemspec +9 -3
- data/lib/backup_report.rb +13 -11
- data/lib/keepitsafe.rb +59 -20
- data/lib/plugins/tar.rb +2 -0
- data/todo.txt +4 -0
- metadata +25 -11
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,6 +1,21 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
+
actionpack (3.1.3)
|
5
|
+
activemodel (= 3.1.3)
|
6
|
+
activesupport (= 3.1.3)
|
7
|
+
builder (~> 3.0.0)
|
8
|
+
erubis (~> 2.7.0)
|
9
|
+
i18n (~> 0.6)
|
10
|
+
rack (~> 1.3.5)
|
11
|
+
rack-cache (~> 1.1)
|
12
|
+
rack-mount (~> 0.8.2)
|
13
|
+
rack-test (~> 0.6.1)
|
14
|
+
sprockets (~> 2.0.3)
|
15
|
+
activemodel (3.1.3)
|
16
|
+
activesupport (= 3.1.3)
|
17
|
+
builder (~> 3.0.0)
|
18
|
+
i18n (~> 0.6)
|
4
19
|
activesupport (3.1.3)
|
5
20
|
multi_json (~> 1.0)
|
6
21
|
builder (3.0.0)
|
@@ -11,19 +26,25 @@ GEM
|
|
11
26
|
json (>= 1.4.6)
|
12
27
|
term-ansicolor (>= 1.0.6)
|
13
28
|
diff-lcs (1.1.3)
|
29
|
+
erubis (2.7.0)
|
14
30
|
gherkin (2.7.3)
|
15
31
|
json (>= 1.4.6)
|
16
32
|
git (1.2.5)
|
33
|
+
hike (1.2.1)
|
17
34
|
i18n (0.6.0)
|
18
35
|
jeweler (1.6.4)
|
19
36
|
bundler (~> 1.0)
|
20
37
|
git (>= 1.2.5)
|
21
38
|
rake
|
22
39
|
json (1.6.5)
|
23
|
-
mail (2.
|
40
|
+
mail (2.4.0)
|
24
41
|
i18n (>= 0.4.0)
|
25
42
|
mime-types (~> 1.16)
|
26
43
|
treetop (~> 1.4.8)
|
44
|
+
mailbuilder (0.2.0)
|
45
|
+
actionpack (>= 3.0.0)
|
46
|
+
mail (~> 2.4.0)
|
47
|
+
nokogiri (~> 1.5.0)
|
27
48
|
mime-types (1.17.2)
|
28
49
|
multi_json (1.0.4)
|
29
50
|
net-scp (1.0.4)
|
@@ -31,7 +52,15 @@ GEM
|
|
31
52
|
net-sftp (2.0.5)
|
32
53
|
net-ssh (>= 2.0.9)
|
33
54
|
net-ssh (2.2.1)
|
55
|
+
nokogiri (1.5.0)
|
34
56
|
polyglot (0.3.3)
|
57
|
+
rack (1.3.6)
|
58
|
+
rack-cache (1.2)
|
59
|
+
rack (>= 0.4)
|
60
|
+
rack-mount (0.8.3)
|
61
|
+
rack (>= 1.0.0)
|
62
|
+
rack-test (0.6.1)
|
63
|
+
rack (>= 1.0)
|
35
64
|
rake (0.9.2.2)
|
36
65
|
rspec (2.3.0)
|
37
66
|
rspec-core (~> 2.3.0)
|
@@ -41,7 +70,12 @@ GEM
|
|
41
70
|
rspec-expectations (2.3.0)
|
42
71
|
diff-lcs (~> 1.1.2)
|
43
72
|
rspec-mocks (2.3.0)
|
73
|
+
sprockets (2.0.3)
|
74
|
+
hike (~> 1.2)
|
75
|
+
rack (~> 1.0)
|
76
|
+
tilt (!= 1.3.0, ~> 1.1)
|
44
77
|
term-ansicolor (1.0.7)
|
78
|
+
tilt (1.3.3)
|
45
79
|
treetop (1.4.10)
|
46
80
|
polyglot
|
47
81
|
polyglot (>= 0.3.1)
|
@@ -56,6 +90,7 @@ DEPENDENCIES
|
|
56
90
|
i18n
|
57
91
|
jeweler (~> 1.6.4)
|
58
92
|
mail
|
93
|
+
mailbuilder
|
59
94
|
net-scp
|
60
95
|
net-sftp
|
61
96
|
net-ssh
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -0,0 +1,107 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
5
|
+
<title>Email report</title>
|
6
|
+
|
7
|
+
</head>
|
8
|
+
<body style="font-family: Arial; color: #aaa; font-size: 16px;">
|
9
|
+
|
10
|
+
|
11
|
+
<center>
|
12
|
+
<table cellpadding="0" cellspacing="0" style="width: 600px; margin: 0px 0px; border: solid 1px #eee; text-align: left;" width=600>
|
13
|
+
<tr>
|
14
|
+
<td>
|
15
|
+
<div class="header" style="background: #7db725; color: white;">
|
16
|
+
<h1 style="padding: 15px; margin: 0px;">Keepitsafe backup report</h1>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<table cellpadding="0" cellspacing="0" style="width: 560px; color: black; margin: 20px;">
|
20
|
+
<tr>
|
21
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;">Started</td>
|
22
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;">Run time</td>
|
23
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;">Backups</td>
|
24
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;">Errors</td>
|
25
|
+
</tr>
|
26
|
+
<tr>
|
27
|
+
<td style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= start_time.strftime('%Y-%m-%d %H:%M') %></td>
|
28
|
+
<td style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= ((end_time - start_time) / 60).to_i %>m <%= ((end_time - start_time) % 60).to_i %>s</td>
|
29
|
+
<td style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= backups.count %></td>
|
30
|
+
<td style="background: #eee; color: red; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= backups.select {|b| !b.error.nil? }.count %></td>
|
31
|
+
</tr>
|
32
|
+
</table>
|
33
|
+
|
34
|
+
<table cellpadding="0" cellspacing="0" style="width: 560px; color: black; margin: 20px;">
|
35
|
+
<tr>
|
36
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;">Domain</td>
|
37
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;">Result</td>
|
38
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;" >Size</td>
|
39
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;"> Time</td>
|
40
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;" >Space left</td>
|
41
|
+
</tr>
|
42
|
+
|
43
|
+
|
44
|
+
<% backups.each do |backup| %>
|
45
|
+
|
46
|
+
<tr>
|
47
|
+
<td style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= backup.domain %></td>
|
48
|
+
<td style="background: #eee; color: <%= backup.error.nil? ? "green" : "red"%>; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= backup.error.nil? ? "Ok" : "Error"%></td>
|
49
|
+
<td style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= backup.backup_size %> mb</td>
|
50
|
+
<td style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= ((backup.end_time - backup.start_time) / 60).to_i %>m <%= ((backup.end_time - backup.start_time) % 60).to_i %>s</td>
|
51
|
+
<td style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= backup.free_after %> mb</td>
|
52
|
+
</tr>
|
53
|
+
|
54
|
+
<% end %>
|
55
|
+
|
56
|
+
</table>
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
<% backups.each do |backup| %>
|
61
|
+
|
62
|
+
<table cellpadding="0" cellspacing="0" style="width: 560px; color: black; margin: 20px;">
|
63
|
+
<tr>
|
64
|
+
<td colspan="4" style="background: #7db725; font-size: 20px; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;">
|
65
|
+
<%= backup.domain %>
|
66
|
+
</td>
|
67
|
+
</tr>
|
68
|
+
<tr>
|
69
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;">Result</td>
|
70
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;" >Size</td>
|
71
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;"> Time</td>
|
72
|
+
<td style="background: #698661; color: white; padding: 10px 0px 10px 10px; border: solid 1px white;" >Space left</td>
|
73
|
+
</tr>
|
74
|
+
<tr>
|
75
|
+
<td style="background: #eee; color: <%= backup.error.nil? ? "green" : "red"%>; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= backup.error.nil? ? "Ok" : "Error"%></td>
|
76
|
+
<td style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= backup.backup_size %> mb</td>
|
77
|
+
<td style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= ((backup.end_time - backup.start_time) / 60).to_i %>m <%= ((backup.end_time - backup.start_time) % 60).to_i %>s</td>
|
78
|
+
<td style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white;"><%= backup.free_after %> mb</td>
|
79
|
+
</tr>
|
80
|
+
<tr>
|
81
|
+
<td colspan="4" style="background: #A2AC50; color: white; padding: 10px 0px 10px 10px; border: solid 1px white; border-top: solid 4px white; border-bottom: solid 0px white;">
|
82
|
+
<h1 style="font-size: 13px; margin: 0px;">Output log</h1>
|
83
|
+
</td>
|
84
|
+
</tr>
|
85
|
+
<tr>
|
86
|
+
<td colspan="4" style="background: #eee; color: black; padding: 10px 0px 10px 10px; border: solid 1px white; border-top: 0px;">
|
87
|
+
<pre style="font-size: 10px; overflow: scroll; width: 500px; padding: 20px;"><%= backup.log_buffer.string %></pre>
|
88
|
+
</td>
|
89
|
+
</tr>
|
90
|
+
</table>
|
91
|
+
|
92
|
+
<% end %>
|
93
|
+
|
94
|
+
<div class="footer" style="background: #5b5f37; color: white; padding: 15px; padding-bottom: 50px; margin-top: 50px;">
|
95
|
+
<p style="margin: 0px; font-size: 13px;">
|
96
|
+
Backup done using <a style="color: white;" href="https://github.com/bjornblomqvist/keepitsafe">Keepitsafe</a>.
|
97
|
+
Contribute by forking and sending a pull request or opening an issue on github. A nicer email design is also welcomed!
|
98
|
+
</p>
|
99
|
+
</div>
|
100
|
+
</td>
|
101
|
+
<tr>
|
102
|
+
</table>
|
103
|
+
</center>
|
104
|
+
|
105
|
+
</body>
|
106
|
+
</html>
|
107
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
gem 'keepitsafe'
|
2
|
+
require 'keepitsafe'
|
3
|
+
|
4
|
+
mail_options = eval(File.read(File.expand_path("~/.config/smtp.rb"))) # Read email options, same key names as for mail gem.
|
5
|
+
|
6
|
+
ErrorMail.setup("backup_script@yourdomain.com","you@yourdomain.com",mail_options)
|
7
|
+
BackupReport.new("backup_script@yourdomain.com","you@yourdomain.com",mail_options) do
|
8
|
+
|
9
|
+
Keepitsafe.new("localhost") do |backup|
|
10
|
+
|
11
|
+
backup.all_mongo 750 # Throws an error if the db is biggar than 750 meg
|
12
|
+
backup.all_postgres 100 # Throws an error if the db is biggar than 100 meg
|
13
|
+
|
14
|
+
backup.files "/var/rails/yourapp/shared/uploads/"
|
15
|
+
backup.tar_gz # Lets save some space
|
16
|
+
backup.scp "backup.yourdomain.com" # Copy the backup of site
|
17
|
+
backup.remove_old_backups
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
data/keepitsafe.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "keepitsafe"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Darwin"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-03-05"
|
13
13
|
s.description = "A Gem for simple creation of backup scripts"
|
14
14
|
s.email = "darwin.git@marianna.se"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -25,6 +25,8 @@ Gem::Specification.new do |s|
|
|
25
25
|
"README.rdoc",
|
26
26
|
"Rakefile",
|
27
27
|
"VERSION",
|
28
|
+
"email/report/report.html.erb",
|
29
|
+
"example/localhost.rb",
|
28
30
|
"example/server.com.rb",
|
29
31
|
"features/keepitsafe.feature",
|
30
32
|
"features/step_definitions/keepitsafe_steps.rb",
|
@@ -44,7 +46,8 @@ Gem::Specification.new do |s|
|
|
44
46
|
"lib/plugins/tar.rb",
|
45
47
|
"lib/stdcapture.rb",
|
46
48
|
"spec/keepitsafe_spec.rb",
|
47
|
-
"spec/spec_helper.rb"
|
49
|
+
"spec/spec_helper.rb",
|
50
|
+
"todo.txt"
|
48
51
|
]
|
49
52
|
s.homepage = "http://github.com/bjornblomqvist/keepitsafe"
|
50
53
|
s.licenses = ["MIT"]
|
@@ -62,6 +65,7 @@ Gem::Specification.new do |s|
|
|
62
65
|
s.add_runtime_dependency(%q<net-sftp>, [">= 0"])
|
63
66
|
s.add_runtime_dependency(%q<i18n>, [">= 0"])
|
64
67
|
s.add_runtime_dependency(%q<mail>, [">= 0"])
|
68
|
+
s.add_runtime_dependency(%q<mailbuilder>, [">= 0"])
|
65
69
|
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
66
70
|
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
67
71
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
@@ -73,6 +77,7 @@ Gem::Specification.new do |s|
|
|
73
77
|
s.add_dependency(%q<net-sftp>, [">= 0"])
|
74
78
|
s.add_dependency(%q<i18n>, [">= 0"])
|
75
79
|
s.add_dependency(%q<mail>, [">= 0"])
|
80
|
+
s.add_dependency(%q<mailbuilder>, [">= 0"])
|
76
81
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
77
82
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
78
83
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
@@ -85,6 +90,7 @@ Gem::Specification.new do |s|
|
|
85
90
|
s.add_dependency(%q<net-sftp>, [">= 0"])
|
86
91
|
s.add_dependency(%q<i18n>, [">= 0"])
|
87
92
|
s.add_dependency(%q<mail>, [">= 0"])
|
93
|
+
s.add_dependency(%q<mailbuilder>, [">= 0"])
|
88
94
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
89
95
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
90
96
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
data/lib/backup_report.rb
CHANGED
@@ -1,31 +1,33 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
require 'mail_builder'
|
2
3
|
require "socket"
|
3
4
|
|
4
5
|
class BackupReport
|
5
6
|
|
6
7
|
def initialize from = ENV['USER'],to = "root",mail_options = {}
|
7
8
|
|
9
|
+
backups = []
|
10
|
+
|
11
|
+
Keepitsafe.after_backup do |backup,values|
|
12
|
+
backups << backup
|
13
|
+
end
|
14
|
+
|
15
|
+
start_time = Time.now
|
8
16
|
capture = STDCapture.capture do
|
9
17
|
yield
|
10
18
|
end
|
19
|
+
end_time = Time.now
|
11
20
|
|
12
21
|
# Send email report
|
13
|
-
mail =
|
22
|
+
mail = MailBuilder.new("#{File.dirname(__FILE__)}/../email/report").build({:backups => backups, :start_time => start_time, :end_time => end_time})
|
14
23
|
mail.to to
|
15
24
|
mail.from from
|
16
25
|
mail.subject "Backup report"
|
17
|
-
mail.body %@
|
18
|
-
|
19
|
-
We are runnig on: #{Socket.gethostname}
|
20
|
-
Below is the output log.
|
21
|
-
|
22
|
-
----
|
23
|
-
#{capture}
|
24
|
-
----@
|
25
|
-
|
26
26
|
mail.delivery_method.settings = mail.delivery_method.settings.merge(mail_options)
|
27
27
|
mail.deliver!
|
28
28
|
|
29
|
+
puts "Sent backup report to: #{to}"
|
30
|
+
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
data/lib/keepitsafe.rb
CHANGED
@@ -156,45 +156,84 @@ class Keepitsafe
|
|
156
156
|
end
|
157
157
|
|
158
158
|
def check_disk_left limit = 1000
|
159
|
-
disk_free_on_root = run_cmd('df -ha').match(/^(.*)\/$/)[0].scan(/([0-9MG\.%]{2,10})/)[2].join("")
|
160
|
-
if disk_free_on_root.match(/g$/i)
|
161
|
-
disk_free_on_root = disk_free_on_root.match(/(\d*)/)[1].to_i * 1000
|
162
|
-
elsif disk_free_on_root.match(/t$/i)
|
163
|
-
disk_free_on_root = disk_free_on_root.match(/(\d*)/)[1].to_i * 1000 * 1000
|
164
|
-
end
|
165
159
|
|
166
|
-
|
160
|
+
free = free_disk_space
|
167
161
|
|
162
|
+
raise "root disk limit reached limit:#{limit} disk_free_on_root:#{free}" if free < limit
|
168
163
|
end
|
169
164
|
|
165
|
+
|
166
|
+
|
170
167
|
def on_localhost?
|
171
168
|
@server_domain == "localhost"
|
172
169
|
end
|
173
170
|
|
171
|
+
attr_accessor :start_time, :end_time, :log_buffer, :error, :free_before, :free_after, :backup_size
|
172
|
+
|
173
|
+
def set_backup_size remote_path
|
174
|
+
|
175
|
+
raw = run_cmd("du -hc #{remote_path}").gsub("\n",' ').gsub("\t",' ').strip.match(/([0-9kmgt.]{2,10})\s*total/i)[1]
|
176
|
+
@backup_size = raw_to_meg(raw)
|
177
|
+
end
|
178
|
+
|
174
179
|
private
|
175
180
|
|
181
|
+
def create_backups_dir
|
182
|
+
puts run_cmd "mkdir -p ~/backups/"
|
183
|
+
end
|
184
|
+
|
185
|
+
def free_disk_space
|
186
|
+
disk_free_on_root = run_cmd('df -ha ~/backups/').scan(/([0-9MGT\.%]{2,10})/)[2].join("")
|
187
|
+
|
188
|
+
disk_free_on_root = raw_to_meg(disk_free_on_root)
|
189
|
+
|
190
|
+
disk_free_on_root.to_i
|
191
|
+
end
|
192
|
+
|
193
|
+
def raw_to_meg raw
|
194
|
+
if raw.match(/t$/i)
|
195
|
+
raw = raw.match(/(\d*)/)[1].to_f * 1000 * 1000
|
196
|
+
elsif raw.match(/g$/i)
|
197
|
+
raw = raw.match(/(\d*)/)[1].to_f * 1000
|
198
|
+
elsif raw.match(/k$/i)
|
199
|
+
raw = raw.match(/(\d*)/)[1].to_f / 1000
|
200
|
+
else
|
201
|
+
raw = raw.match(/(\d*)/)[1].to_i
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
176
205
|
def do_the_stuff
|
177
206
|
@log_buffer = StringIO.new
|
178
207
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
208
|
+
@start_time = Time.now
|
209
|
+
create_backups_dir
|
210
|
+
@free_before = free_disk_space
|
211
|
+
trigger('before_backup')
|
212
|
+
|
213
|
+
begin
|
214
|
+
STDCapture.capture(@log_buffer) do
|
215
|
+
check_disk_left
|
216
|
+
create_backup_target_dir
|
217
|
+
create_pending_file
|
185
218
|
|
186
|
-
|
187
|
-
|
188
|
-
remove_pending_file
|
189
|
-
rescue StandardError => e
|
190
|
-
puts e.inspect
|
191
|
-
puts e.backtrace
|
219
|
+
yield self
|
192
220
|
|
193
|
-
|
221
|
+
remove_pending_file
|
194
222
|
end
|
223
|
+
rescue StandardError => e
|
224
|
+
@error = e
|
225
|
+
puts e.inspect
|
226
|
+
puts e.backtrace
|
227
|
+
|
228
|
+
trigger('on_error',{:error => e})
|
195
229
|
end
|
196
230
|
|
197
231
|
upload_log
|
232
|
+
|
233
|
+
@end_time = Time.now
|
234
|
+
@free_after = free_disk_space
|
235
|
+
set_backup_size(backup_target_dir) unless @backup_size
|
236
|
+
trigger('after_backup')
|
198
237
|
end
|
199
238
|
|
200
239
|
end
|
data/lib/plugins/tar.rb
CHANGED
data/todo.txt
ADDED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: keepitsafe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Darwin
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-03-05 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -79,8 +79,19 @@ dependencies:
|
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: *id006
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
82
|
+
name: mailbuilder
|
83
83
|
requirement: &id007 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: "0"
|
89
|
+
type: :runtime
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: *id007
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: rspec
|
94
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
84
95
|
none: false
|
85
96
|
requirements:
|
86
97
|
- - ~>
|
@@ -88,10 +99,10 @@ dependencies:
|
|
88
99
|
version: 2.3.0
|
89
100
|
type: :development
|
90
101
|
prerelease: false
|
91
|
-
version_requirements: *
|
102
|
+
version_requirements: *id008
|
92
103
|
- !ruby/object:Gem::Dependency
|
93
104
|
name: cucumber
|
94
|
-
requirement: &
|
105
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
95
106
|
none: false
|
96
107
|
requirements:
|
97
108
|
- - ">="
|
@@ -99,10 +110,10 @@ dependencies:
|
|
99
110
|
version: "0"
|
100
111
|
type: :development
|
101
112
|
prerelease: false
|
102
|
-
version_requirements: *
|
113
|
+
version_requirements: *id009
|
103
114
|
- !ruby/object:Gem::Dependency
|
104
115
|
name: bundler
|
105
|
-
requirement: &
|
116
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
106
117
|
none: false
|
107
118
|
requirements:
|
108
119
|
- - ~>
|
@@ -110,10 +121,10 @@ dependencies:
|
|
110
121
|
version: 1.0.0
|
111
122
|
type: :development
|
112
123
|
prerelease: false
|
113
|
-
version_requirements: *
|
124
|
+
version_requirements: *id010
|
114
125
|
- !ruby/object:Gem::Dependency
|
115
126
|
name: jeweler
|
116
|
-
requirement: &
|
127
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
117
128
|
none: false
|
118
129
|
requirements:
|
119
130
|
- - ~>
|
@@ -121,7 +132,7 @@ dependencies:
|
|
121
132
|
version: 1.6.4
|
122
133
|
type: :development
|
123
134
|
prerelease: false
|
124
|
-
version_requirements: *
|
135
|
+
version_requirements: *id011
|
125
136
|
description: A Gem for simple creation of backup scripts
|
126
137
|
email: darwin.git@marianna.se
|
127
138
|
executables: []
|
@@ -140,6 +151,8 @@ files:
|
|
140
151
|
- README.rdoc
|
141
152
|
- Rakefile
|
142
153
|
- VERSION
|
154
|
+
- email/report/report.html.erb
|
155
|
+
- example/localhost.rb
|
143
156
|
- example/server.com.rb
|
144
157
|
- features/keepitsafe.feature
|
145
158
|
- features/step_definitions/keepitsafe_steps.rb
|
@@ -160,6 +173,7 @@ files:
|
|
160
173
|
- lib/stdcapture.rb
|
161
174
|
- spec/keepitsafe_spec.rb
|
162
175
|
- spec/spec_helper.rb
|
176
|
+
- todo.txt
|
163
177
|
homepage: http://github.com/bjornblomqvist/keepitsafe
|
164
178
|
licenses:
|
165
179
|
- MIT
|
@@ -173,7 +187,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
173
187
|
requirements:
|
174
188
|
- - ">="
|
175
189
|
- !ruby/object:Gem::Version
|
176
|
-
hash: -
|
190
|
+
hash: -719854199361266435
|
177
191
|
segments:
|
178
192
|
- 0
|
179
193
|
version: "0"
|