rubycron 0.2.1 → 0.2.2
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 +6 -1
- data/lib/rubycron.rb +16 -12
- metadata +10 -5
data/Gemfile
CHANGED
data/lib/rubycron.rb
CHANGED
@@ -13,14 +13,14 @@ module RubyCron
|
|
13
13
|
require 'erb'
|
14
14
|
|
15
15
|
attr_accessor :name, :author, :mailto, :mailfrom, :mailsubject, :mailon, :exiton, :template, :smtpsettings, :logfile, :verbose
|
16
|
-
attr_reader :warnings, :errors
|
16
|
+
attr_reader :warnings, :errors, :report
|
17
17
|
|
18
18
|
def initialize(args = nil)
|
19
19
|
@warnings, @errors = [], []
|
20
20
|
|
21
21
|
case args
|
22
22
|
when NilClass then yield self if block_given?
|
23
|
-
when Proc then instance_eval(args)
|
23
|
+
when Proc then instance_eval(&args)
|
24
24
|
when Hash then
|
25
25
|
|
26
26
|
args = load_config(:file, args[:configfile]).merge(args) if args[:configfile]
|
@@ -45,12 +45,14 @@ module RubyCron
|
|
45
45
|
io = open(source)
|
46
46
|
end
|
47
47
|
yml = YAML::load(io)
|
48
|
-
|
49
|
-
|
48
|
+
if yml.is_a?(Hash)
|
49
|
+
return yml
|
50
|
+
else
|
51
|
+
terminate "Could not load the YAML configuration."
|
52
|
+
end
|
50
53
|
end
|
51
54
|
|
52
55
|
def check_sanity
|
53
|
-
|
54
56
|
raise "This job has no name." unless @name
|
55
57
|
raise "This job has no author." unless @author
|
56
58
|
raise "No To: header was set. " unless @mailto
|
@@ -58,7 +60,6 @@ module RubyCron
|
|
58
60
|
check_smtp_settings
|
59
61
|
set_defaults
|
60
62
|
enable_file_logging if @logfile
|
61
|
-
|
62
63
|
end
|
63
64
|
|
64
65
|
def check_smtp_settings
|
@@ -66,7 +67,7 @@ module RubyCron
|
|
66
67
|
raise "SMTP settings have to be passed in as a hash." unless @smtpsettings.instance_of?(Hash)
|
67
68
|
raise "SMTP settings should include at least an address (:address)." unless @smtpsettings.keys.include?(:address)
|
68
69
|
raise "SMTP settings should include at least a port number (:port)." unless @smtpsettings.keys.include?(:port)
|
69
|
-
|
70
|
+
elsif @smtpsettings.nil?
|
70
71
|
raise "Cannot connect to local smtp server." unless smtp_connection?
|
71
72
|
end
|
72
73
|
end
|
@@ -84,12 +85,12 @@ module RubyCron
|
|
84
85
|
$stdout.sync = true
|
85
86
|
$stderr.reopen($stdout)
|
86
87
|
rescue => e
|
87
|
-
$stdout = STDOUT
|
88
|
+
$stdout, $stderr = STDOUT, STDERR
|
88
89
|
raise e
|
89
90
|
end
|
90
91
|
|
91
92
|
def terminate(message)
|
92
|
-
$stderr.puts "## Cannot complete job. Reason: #{message}"
|
93
|
+
$stderr.puts "## Cannot complete job. Reason: #{message}" unless ENV['RSPEC']
|
93
94
|
exit 1
|
94
95
|
end
|
95
96
|
|
@@ -110,7 +111,7 @@ module RubyCron
|
|
110
111
|
puts "Number of errors : #{@errors.size}"
|
111
112
|
end
|
112
113
|
unless self.mailon == :none || (@warnings.empty? && @errors.empty? && self.mailon != :all)
|
113
|
-
|
114
|
+
send_report
|
114
115
|
end
|
115
116
|
end
|
116
117
|
|
@@ -128,6 +129,7 @@ module RubyCron
|
|
128
129
|
|
129
130
|
private
|
130
131
|
def smtp_connection?
|
132
|
+
#return true if ENV['RSPEC']
|
131
133
|
return true if Net::SMTP.start('localhost', 25)
|
132
134
|
rescue
|
133
135
|
return false
|
@@ -136,12 +138,14 @@ module RubyCron
|
|
136
138
|
# Report on the status of the cronjob through the use of
|
137
139
|
# an erb template file, and mikel's excellent mail gem.
|
138
140
|
private
|
139
|
-
def
|
141
|
+
def send_report
|
142
|
+
@report = ERB.new(File.read(@template)).result(binding)
|
140
143
|
@mailsubject = "Cron report for #{name}: #{@warnings.size} warnings & #{@errors.size} errors" unless @mailsubject
|
144
|
+
|
141
145
|
mailfrom = @mailfrom
|
142
146
|
mailto = @mailto
|
143
147
|
mailsubject = @mailsubject
|
144
|
-
mailbody =
|
148
|
+
mailbody = @report
|
145
149
|
|
146
150
|
if @smtpsettings
|
147
151
|
smtpsettings = @smtpsettings
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubycron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mail
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,12 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
description: Write clean cronjobs in Ruby, and get reporting for free!
|
26
31
|
email: rubycron@kamphorst.com
|
27
32
|
executables:
|
@@ -56,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
56
61
|
version: '0'
|
57
62
|
requirements: []
|
58
63
|
rubyforge_project:
|
59
|
-
rubygems_version: 1.8.
|
64
|
+
rubygems_version: 1.8.24
|
60
65
|
signing_key:
|
61
66
|
specification_version: 3
|
62
67
|
summary: Simplifies your Ruby cronjobs by automating the reporting process.
|