rubycron 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/Gemfile +2 -0
- data/README.md +5 -1
- data/lib/rubycron/errors.rb +7 -0
- data/lib/rubycron/main.rb +29 -13
- data/lib/rubycron/version.rb +1 -1
- data/lib/rubycron.rb +1 -0
- metadata +6 -4
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
# RubyCron
|
2
2
|
|
3
|
-
Define your cronjobs in your favorite language, and get reporting for free
|
3
|
+
**Define your cronjobs in your favorite language, and get reporting for free!**
|
4
4
|
|
5
5
|
By letting RubyCron deal with warnings, errors, and sending reports, you can focus on writing clean and effective cronjobs in Ruby.
|
6
6
|
|
7
|
+
[](https://travis-ci.org/bartkamphorst/rubycron)
|
8
|
+
[](https://coveralls.io/r/bartkamphorst/rubycron?branch=master)
|
9
|
+
[](http://badge.fury.io/rb/rubycron)
|
10
|
+
|
7
11
|
## Author
|
8
12
|
|
9
13
|
* Bart Kamphorst
|
data/lib/rubycron/main.rb
CHANGED
@@ -12,9 +12,12 @@ module RubyCron
|
|
12
12
|
require 'mail'
|
13
13
|
require 'erb'
|
14
14
|
|
15
|
-
attr_accessor :name, :author, :mailto, :mailfrom, :mailsubject, :mailon, :exiton, :template, :smtpsettings, :logfile, :verbose
|
15
|
+
attr_accessor :name, :author, :mailto, :mailfrom, :mailsubject, :mailon, :exiton, :template, :smtpsettings, :debug, :logfile, :verbose
|
16
16
|
attr_reader :warnings, :errors, :report
|
17
17
|
|
18
|
+
DEFAULT_SERVER = 'localhost'
|
19
|
+
DEFAULT_PORT = 25
|
20
|
+
|
18
21
|
def initialize(args = nil)
|
19
22
|
@warnings, @errors = [], []
|
20
23
|
|
@@ -59,6 +62,7 @@ module RubyCron
|
|
59
62
|
|
60
63
|
check_smtp_settings
|
61
64
|
set_defaults
|
65
|
+
enable_debug_mode if @debug
|
62
66
|
enable_file_logging if @logfile
|
63
67
|
end
|
64
68
|
|
@@ -80,6 +84,11 @@ module RubyCron
|
|
80
84
|
@exiton = :all unless self.exiton && [:none, :warning, :error, :all].include?(self.exiton)
|
81
85
|
end
|
82
86
|
|
87
|
+
def enable_debug_mode
|
88
|
+
@mailon = :none
|
89
|
+
@verbose = true
|
90
|
+
end
|
91
|
+
|
83
92
|
def enable_file_logging
|
84
93
|
$stdout.reopen(@logfile, "a")
|
85
94
|
$stdout.sync = true
|
@@ -97,39 +106,46 @@ module RubyCron
|
|
97
106
|
# Execute a given block of code (the cronjob), rescue encountered errors,
|
98
107
|
# and send a report about it if necessary.
|
99
108
|
def execute(&block)
|
109
|
+
puts "[INFO ] Running in debug mode. Will not send mail." if self.debug
|
100
110
|
@starttime = Time.now
|
101
111
|
puts "\nStarting run of #{self.name} at #{@starttime}.\n----" if self.verbose || self.logfile
|
102
112
|
instance_eval(&block)
|
113
|
+
rescue ExitOnWarning, ExitOnError => e
|
114
|
+
terminate(e.message)
|
103
115
|
rescue Exception => e
|
104
|
-
|
105
|
-
|
116
|
+
trace = "#{e.message}\n" + e.backtrace.join("\n\t")
|
117
|
+
@errors << trace
|
118
|
+
$stderr.puts "[ERROR] #{trace}" if self.verbose || self.logfile
|
119
|
+
terminate(trace) if exiton == (:error || :all)
|
106
120
|
ensure
|
107
121
|
@endtime = Time.now
|
108
|
-
if self.verbose || self.logfile
|
109
|
-
puts "Run ended at #{@endtime}.\n----"
|
110
|
-
puts "Number of warnings: #{@warnings.size}"
|
111
|
-
puts "Number of errors : #{@errors.size}"
|
112
|
-
end
|
122
|
+
produce_summary if (self.verbose || self.logfile)
|
113
123
|
unless self.mailon == :none || (@warnings.empty? && @errors.empty? && self.mailon != :all)
|
114
124
|
send_report
|
115
125
|
end
|
116
126
|
end
|
117
127
|
|
128
|
+
def produce_summary
|
129
|
+
puts "Run ended at #{@endtime}.\n----"
|
130
|
+
puts "Number of warnings: #{@warnings.size}"
|
131
|
+
puts "Number of errors : #{@errors.size}"
|
132
|
+
end
|
133
|
+
|
118
134
|
def warning(message)
|
119
|
-
$stderr.puts message if self.verbose || self.logfile
|
120
|
-
raise "Configured to exit on warning." if exiton == (:warning || :all)
|
135
|
+
$stderr.puts "[WARN ] #{message}" if self.verbose || self.logfile
|
121
136
|
@warnings << message
|
137
|
+
raise ExitOnWarning.new("Configured to exit on warning.") if exiton == (:warning || :all)
|
122
138
|
end
|
123
139
|
|
124
140
|
def error(message)
|
125
|
-
$stderr.puts message if self.verbose || self.logfile
|
126
|
-
raise "Configured to exit on error." if exiton == (:error || :all)
|
141
|
+
$stderr.puts "[ERROR] #{message}" if self.verbose || self.logfile
|
127
142
|
@errors << message
|
143
|
+
raise ExitOnError.new("Configured to exit on error.") if exiton == (:error || :all)
|
128
144
|
end
|
129
145
|
|
130
146
|
private
|
131
147
|
def smtp_connection?
|
132
|
-
return true if Net::SMTP.start(
|
148
|
+
return true if Net::SMTP.start(DEFAULT_SERVER, DEFAULT_PORT)
|
133
149
|
rescue
|
134
150
|
return false
|
135
151
|
end
|
data/lib/rubycron/version.rb
CHANGED
data/lib/rubycron.rb
CHANGED
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.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mail
|
@@ -70,13 +70,15 @@ files:
|
|
70
70
|
- README.md
|
71
71
|
- Gemfile
|
72
72
|
- lib/rubycron.rb
|
73
|
+
- lib/rubycron/errors.rb
|
73
74
|
- lib/rubycron/main.rb
|
74
75
|
- lib/rubycron/report.erb
|
75
76
|
- lib/rubycron/version.rb
|
76
77
|
- sample/test.rcj
|
77
78
|
- bin/rcjrunner.rb
|
78
79
|
homepage: https://github.com/bartkamphorst/rubycron
|
79
|
-
licenses:
|
80
|
+
licenses:
|
81
|
+
- Modified BSD
|
80
82
|
post_install_message:
|
81
83
|
rdoc_options: []
|
82
84
|
require_paths:
|
@@ -95,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
97
|
version: '0'
|
96
98
|
requirements: []
|
97
99
|
rubyforge_project:
|
98
|
-
rubygems_version: 1.8.
|
100
|
+
rubygems_version: 1.8.25
|
99
101
|
signing_key:
|
100
102
|
specification_version: 3
|
101
103
|
summary: Simplifies your Ruby cronjobs by automating the reporting process.
|