bullhorn 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -33,7 +33,7 @@ See http://bullhorn.it and signup for a free account!
33
33
  :filters => %w(password password_confirmation credit_card)
34
34
 
35
35
  == Rails 2.3.5 backward compatibility
36
-
36
+
37
37
  # in config/environment.rb
38
38
 
39
39
  config.gem 'bullhorn'
@@ -61,4 +61,4 @@ See http://bullhorn.it and signup for a free account!
61
61
 
62
62
  == Copyright
63
63
 
64
- Copyright (c) 2010 Cyril David. See LICENSE for details.
64
+ Copyright (c) 2010 Cyril David. See LICENSE for details.
data/Rakefile CHANGED
@@ -53,4 +53,4 @@ Rake::RDocTask.new do |rdoc|
53
53
  rdoc.title = "bullhorn #{version}"
54
54
  rdoc.rdoc_files.include('README*')
55
55
  rdoc.rdoc_files.include('lib/**/*.rb')
56
- end
56
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/bullhorn.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bullhorn}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Cyril David"]
12
- s.date = %q{2010-05-16}
12
+ s.date = %q{2010-05-17}
13
13
  s.description = %q{drop in rack middleware for bullhorn.it}
14
14
  s.email = %q{cyx.ucron@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -81,7 +81,8 @@ Gem::Specification.new do |s|
81
81
  "lib/bullhorn/sender.rb",
82
82
  "test/helper.rb",
83
83
  "test/test_bullhorn.rb",
84
- "test/test_bullhorn_plugin.rb"
84
+ "test/test_bullhorn_plugin.rb",
85
+ "test/test_ignore_exceptions.rb"
85
86
  ]
86
87
  s.homepage = %q{http://github.com/sinefunc/bullhorn}
87
88
  s.rdoc_options = ["--charset=UTF-8"]
@@ -92,6 +93,7 @@ Gem::Specification.new do |s|
92
93
  "test/helper.rb",
93
94
  "test/test_bullhorn.rb",
94
95
  "test/test_bullhorn_plugin.rb",
96
+ "test/test_ignore_exceptions.rb",
95
97
  "examples/foobar/app/controllers/application_controller.rb",
96
98
  "examples/foobar/app/controllers/raiser_controller.rb",
97
99
  "examples/foobar/app/helpers/application_helper.rb",
data/lib/bullhorn.rb CHANGED
@@ -18,14 +18,16 @@ class Bullhorn
18
18
  attr :filters
19
19
  attr :api_key
20
20
  attr :url
21
+ attr :ignore_exceptions
21
22
 
22
23
  include Sender
23
24
 
24
25
  def initialize(app, options = {})
25
- @app = app
26
- @api_key = options[:api_key] || raise(ArgumentError, ":api_key is required")
27
- @filters = Array(options[:filters])
28
- @url = options[:url] || URL
26
+ @app = app
27
+ @api_key = options[:api_key] || raise(ArgumentError, ":api_key is required")
28
+ @filters = Array(options[:filters])
29
+ @url = options[:url] || URL
30
+ @ignore_exceptions = Array(options[:ignore_exceptions] || default_ignore_exceptions)
29
31
  end
30
32
 
31
33
  def call(env)
@@ -33,10 +35,22 @@ class Bullhorn
33
35
  begin
34
36
  @app.call(env)
35
37
  rescue Exception => ex
36
- notify ex, env
38
+ unless ignore_exceptions.include?(ex.class)
39
+ notify ex, env
40
+ end
41
+
37
42
  raise ex
38
43
  end
39
44
 
40
45
  [status, headers, body]
41
46
  end
42
- end
47
+
48
+ protected
49
+ def default_ignore_exceptions
50
+ [].tap do |exceptions|
51
+ exceptions << ActiveRecord::RecordNotFound if defined? ActiveRecord
52
+ exceptions << AbstractController::ActionNotFound if defined? AbstractController
53
+ exceptions << ActionController::RoutingError if defined? ActionController
54
+ end
55
+ end
56
+ end
@@ -25,7 +25,7 @@ class Bullhorn
25
25
  end
26
26
 
27
27
  def notify_with_bullhorn!(exception)
28
- unless Bullhorn::Plugin.ignored_exceptions.include?(exception)
28
+ unless Bullhorn::Plugin.ignored_exceptions.include?(exception.class)
29
29
  bullhorn = Bullhorn.new(self, Bullhorn::Plugin.options)
30
30
  bullhorn.notify(exception, request.env)
31
31
  end
@@ -56,7 +56,7 @@ class Bullhorn
56
56
  end
57
57
 
58
58
  def sha1(exception)
59
- Digest::SHA1.hexdigest(exception.message + exception.backtrace.inspect)
59
+ Digest::SHA1.hexdigest(exception.message + exception.backtrace.inspect)
60
60
  end
61
61
  end
62
- end
62
+ end
@@ -103,4 +103,83 @@ class TestBullhorn < Test::Unit::TestCase
103
103
  end
104
104
  end
105
105
  end
106
- end
106
+
107
+ context "given ignore_exceptions" do
108
+ IgnoredError = Class.new(StandardError)
109
+ RaisedError = Class.new(StandardError)
110
+
111
+ setup do
112
+ @app = lambda { |env| raise IgnoredError, "Ignored!" }
113
+
114
+ @bullhorn = Bullhorn.new(@app, :api_key => "_key_",
115
+ :ignore_exceptions => [IgnoredError])
116
+
117
+ FakeWeb.allow_net_connect = false
118
+ end
119
+
120
+ should "not notify the server of the exception" do
121
+ assert_raise IgnoredError do
122
+ @bullhorn.call({})
123
+ end
124
+ end
125
+
126
+ should "notify when raising RaisedError" do
127
+ @app = lambda { |env| raise RaisedError, "Raised!" }
128
+
129
+ @bullhorn = Bullhorn.new(@app, :api_key => "_key_",
130
+ :ignore_exceptions => [IgnoredError])
131
+
132
+ assert_raise RaisedError, FakeWeb::NetConnectNotAllowedError do
133
+ @bullhorn.call({})
134
+ end
135
+ end
136
+ end
137
+
138
+ context "when ActiveRecord exists" do
139
+ module ::ActiveRecord
140
+ RecordNotFound = Class.new(StandardError)
141
+ end
142
+
143
+ teardown do
144
+ Object.send :remove_const, :ActiveRecord
145
+ end
146
+
147
+ should "include it in the default ignore_exceptions by default" do
148
+ bullhorn = Bullhorn.new(lambda {}, :api_key => "_key")
149
+
150
+ assert bullhorn.ignore_exceptions.include?(ActiveRecord::RecordNotFound)
151
+ end
152
+ end
153
+
154
+ context "when AbstractController exists" do
155
+ module ::AbstractController
156
+ ActionNotFound = Class.new(StandardError)
157
+ end
158
+
159
+ teardown do
160
+ Object.send :remove_const, :AbstractController
161
+ end
162
+
163
+ should "include it in the default ignore_exceptions" do
164
+ bh = Bullhorn.new(lambda {}, :api_key => "_key")
165
+
166
+ assert bh.ignore_exceptions.include?(AbstractController::ActionNotFound)
167
+ end
168
+ end
169
+
170
+ context "when ActionController exists" do
171
+ module ::ActionController
172
+ RoutingError = Class.new(StandardError)
173
+ end
174
+
175
+ teardown do
176
+ Object.send :remove_const, :ActionController
177
+ end
178
+
179
+ should "include it in the default ignored_exceptions" do
180
+ bh = Bullhorn.new(lambda {}, :api_key => "_key")
181
+
182
+ assert bh.ignore_exceptions.include?(ActionController::RoutingError)
183
+ end
184
+ end
185
+ end
@@ -0,0 +1,5 @@
1
+ require "helper"
2
+
3
+ class TestIgnoreExceptions < Test::Unit::TestCase
4
+
5
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Cyril David
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-16 00:00:00 +08:00
17
+ date: 2010-05-17 00:00:00 +08:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -140,6 +140,7 @@ files:
140
140
  - test/helper.rb
141
141
  - test/test_bullhorn.rb
142
142
  - test/test_bullhorn_plugin.rb
143
+ - test/test_ignore_exceptions.rb
143
144
  has_rdoc: true
144
145
  homepage: http://github.com/sinefunc/bullhorn
145
146
  licenses: []
@@ -174,6 +175,7 @@ test_files:
174
175
  - test/helper.rb
175
176
  - test/test_bullhorn.rb
176
177
  - test/test_bullhorn_plugin.rb
178
+ - test/test_ignore_exceptions.rb
177
179
  - examples/foobar/app/controllers/application_controller.rb
178
180
  - examples/foobar/app/controllers/raiser_controller.rb
179
181
  - examples/foobar/app/helpers/application_helper.rb