safely 0.1.0 → 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/lib/safely/config.rb +2 -1
- data/lib/safely/strategy/log.rb +30 -0
- data/lib/safely/strategy.rb +1 -0
- data/lib/safely.rb +3 -3
- data/safely.gemspec +21 -5
- data/spec/strategies/log_spec.rb +48 -0
- data/spec/support/fake_logger.rb +20 -0
- metadata +7 -2
data/lib/safely/config.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
module Safely
|
2
|
+
module Strategy
|
3
|
+
class Log
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
# Logger to use
|
8
|
+
attr_accessor :logger
|
9
|
+
|
10
|
+
# Flush logger
|
11
|
+
attr_accessor :flush
|
12
|
+
|
13
|
+
def load!
|
14
|
+
@flush ||= false
|
15
|
+
end
|
16
|
+
|
17
|
+
def report!( exception )
|
18
|
+
return if self.logger.nil?
|
19
|
+
|
20
|
+
self.logger.error("[SAFELY] Type: #{exception.class.name}")
|
21
|
+
self.logger.error("[SAFELY] Message: #{exception.message}")
|
22
|
+
self.logger.error("[SAFELY] Backtrace: #{exception.backtrace.join("\n ")}")
|
23
|
+
|
24
|
+
self.logger.flush if self.logger.respond_to?(:flush) && self.flush
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/safely/strategy.rb
CHANGED
data/lib/safely.rb
CHANGED
@@ -2,7 +2,7 @@ $:.unshift File.expand_path('../', __FILE__)
|
|
2
2
|
|
3
3
|
module Safely
|
4
4
|
|
5
|
-
VERSION = "0.
|
5
|
+
VERSION = "0.2.0"
|
6
6
|
|
7
7
|
autoload :Config, 'safely/config'
|
8
8
|
autoload :Mixin, 'safely/mixin'
|
@@ -23,13 +23,13 @@ module Safely
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def load_strategies!
|
26
|
-
|
26
|
+
config.strategies.each { |s| s.load! }
|
27
27
|
end
|
28
28
|
|
29
29
|
def report!( exception )
|
30
30
|
load_strategies! if @config.nil?
|
31
31
|
|
32
|
-
|
32
|
+
config.strategies.each { |s| s.report! exception }
|
33
33
|
end
|
34
34
|
|
35
35
|
private
|
data/safely.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{safely}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kenneth Kalmer"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-05-07}
|
13
13
|
s.description = %q{Safely run your code in a loving error reporting embrace}
|
14
14
|
s.email = %q{kenneth.kalmer@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
21
|
".rspec",
|
22
|
+
"CHANGES",
|
22
23
|
"Gemfile",
|
23
24
|
"Gemfile.lock",
|
24
25
|
"LICENSE.txt",
|
@@ -28,10 +29,18 @@ Gem::Specification.new do |s|
|
|
28
29
|
"lib/safely.rb",
|
29
30
|
"lib/safely/config.rb",
|
30
31
|
"lib/safely/mixin.rb",
|
32
|
+
"lib/safely/strategy.rb",
|
33
|
+
"lib/safely/strategy/hoptoad.rb",
|
34
|
+
"lib/safely/strategy/log.rb",
|
35
|
+
"lib/safely/strategy/mail.rb",
|
31
36
|
"safely.gemspec",
|
32
37
|
"spec/config_spec.rb",
|
33
38
|
"spec/safely_spec.rb",
|
34
|
-
"spec/spec_helper.rb"
|
39
|
+
"spec/spec_helper.rb",
|
40
|
+
"spec/strategies/hoptoad_spec.rb",
|
41
|
+
"spec/strategies/log_spec.rb",
|
42
|
+
"spec/strategies/mail_spec.rb",
|
43
|
+
"spec/support/fake_logger.rb"
|
35
44
|
]
|
36
45
|
s.homepage = %q{http://github.com/kennethkalmer/safely}
|
37
46
|
s.licenses = ["MIT"]
|
@@ -41,7 +50,11 @@ Gem::Specification.new do |s|
|
|
41
50
|
s.test_files = [
|
42
51
|
"spec/config_spec.rb",
|
43
52
|
"spec/safely_spec.rb",
|
44
|
-
"spec/spec_helper.rb"
|
53
|
+
"spec/spec_helper.rb",
|
54
|
+
"spec/strategies/hoptoad_spec.rb",
|
55
|
+
"spec/strategies/log_spec.rb",
|
56
|
+
"spec/strategies/mail_spec.rb",
|
57
|
+
"spec/support/fake_logger.rb"
|
45
58
|
]
|
46
59
|
|
47
60
|
if s.respond_to? :specification_version then
|
@@ -49,6 +62,7 @@ Gem::Specification.new do |s|
|
|
49
62
|
|
50
63
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
51
64
|
s.add_development_dependency(%q<toadhopper>, [">= 0"])
|
65
|
+
s.add_development_dependency(%q<mail>, [">= 0"])
|
52
66
|
s.add_development_dependency(%q<rspec>, ["~> 2.5.0"])
|
53
67
|
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
54
68
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
@@ -57,6 +71,7 @@ Gem::Specification.new do |s|
|
|
57
71
|
s.add_development_dependency(%q<mocha>, [">= 0"])
|
58
72
|
else
|
59
73
|
s.add_dependency(%q<toadhopper>, [">= 0"])
|
74
|
+
s.add_dependency(%q<mail>, [">= 0"])
|
60
75
|
s.add_dependency(%q<rspec>, ["~> 2.5.0"])
|
61
76
|
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
62
77
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
@@ -66,6 +81,7 @@ Gem::Specification.new do |s|
|
|
66
81
|
end
|
67
82
|
else
|
68
83
|
s.add_dependency(%q<toadhopper>, [">= 0"])
|
84
|
+
s.add_dependency(%q<mail>, [">= 0"])
|
69
85
|
s.add_dependency(%q<rspec>, ["~> 2.5.0"])
|
70
86
|
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
71
87
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Safely::Strategy::Log do
|
4
|
+
it "should support setting a logger" do
|
5
|
+
Safely::Strategy::Log.should respond_to(:logger)
|
6
|
+
Safely::Strategy::Log.should respond_to(:logger=)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should support setting flushing" do
|
10
|
+
Safely::Strategy::Log.should respond_to(:flush)
|
11
|
+
Safely::Strategy::Log.should respond_to(:flush=)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "reporting" do
|
15
|
+
it "should log exceptions when configured" do
|
16
|
+
logger = FakeLogger.new
|
17
|
+
|
18
|
+
Safely::Strategy::Log.logger = logger
|
19
|
+
|
20
|
+
safely do
|
21
|
+
raise "Argh"
|
22
|
+
end
|
23
|
+
|
24
|
+
logger.lines.should_not be_empty
|
25
|
+
logger.to_s.should match(/RuntimeError/)
|
26
|
+
logger.to_s.should match(/Backtrace/)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should flush logger when configured" do
|
30
|
+
logger = FakeLogger.new
|
31
|
+
|
32
|
+
Safely::Strategy::Log.logger = logger
|
33
|
+
Safely::Strategy::Log.flush = true
|
34
|
+
|
35
|
+
logger.expects(:flush)
|
36
|
+
|
37
|
+
safely do
|
38
|
+
raise "Argh"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should do nothing if not configured" do
|
43
|
+
safely do
|
44
|
+
raise "Argh"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: safely
|
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
|
- Kenneth Kalmer
|
@@ -124,13 +124,16 @@ files:
|
|
124
124
|
- lib/safely/mixin.rb
|
125
125
|
- lib/safely/strategy.rb
|
126
126
|
- lib/safely/strategy/hoptoad.rb
|
127
|
+
- lib/safely/strategy/log.rb
|
127
128
|
- lib/safely/strategy/mail.rb
|
128
129
|
- safely.gemspec
|
129
130
|
- spec/config_spec.rb
|
130
131
|
- spec/safely_spec.rb
|
131
132
|
- spec/spec_helper.rb
|
132
133
|
- spec/strategies/hoptoad_spec.rb
|
134
|
+
- spec/strategies/log_spec.rb
|
133
135
|
- spec/strategies/mail_spec.rb
|
136
|
+
- spec/support/fake_logger.rb
|
134
137
|
homepage: http://github.com/kennethkalmer/safely
|
135
138
|
licenses:
|
136
139
|
- MIT
|
@@ -144,7 +147,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
144
147
|
requirements:
|
145
148
|
- - ">="
|
146
149
|
- !ruby/object:Gem::Version
|
147
|
-
hash: -
|
150
|
+
hash: -2463736658289113276
|
148
151
|
segments:
|
149
152
|
- 0
|
150
153
|
version: "0"
|
@@ -166,4 +169,6 @@ test_files:
|
|
166
169
|
- spec/safely_spec.rb
|
167
170
|
- spec/spec_helper.rb
|
168
171
|
- spec/strategies/hoptoad_spec.rb
|
172
|
+
- spec/strategies/log_spec.rb
|
169
173
|
- spec/strategies/mail_spec.rb
|
174
|
+
- spec/support/fake_logger.rb
|