airbrake 3.1.7 → 3.1.8

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,14 @@
1
+ Version 3.1.8 - 2013-02-05 16:29:43 +0100
2
+ ===============================================================================
3
+
4
+ Hrvoje Šimić (5):
5
+ rename SUPPORTED_RAILS_VERSIONS to TESTED_AGAINST
6
+ don't call id on nil - fixes #177
7
+ move our middleware right after exception middleware (#178)
8
+ implement tests for #178
9
+ be nice to older rails versions
10
+
11
+
1
12
  Version 3.1.7 - 2013-01-28 13:35:10 +0100
2
13
  ===============================================================================
3
14
 
@@ -1058,3 +1069,4 @@ Nick Quaranto (3):
1058
1069
 
1059
1070
 
1060
1071
 
1072
+
@@ -249,3 +249,7 @@ Feature: Install the Gem in a Rails application
249
249
  And I perform a request to "http://example.com:123/test/index" in the "production" environment
250
250
  Then I should receive a Airbrake notification
251
251
  And the Airbrake notification should contain the framework information
252
+
253
+ Scenario: Middleware should be correctly placed
254
+ When I list the application's middleware and save it into a file
255
+ Then the Airbrake middleware should be placed correctly
@@ -244,3 +244,17 @@ end
244
244
  Then /^the Airbrake notification should contain the framework information$/ do
245
245
  step %{the output should contain "Rails: #{ENV["RAILS_VERSION"]}"}
246
246
  end
247
+
248
+ When /^I list the application's middleware and save it into a file$/ do
249
+ step %{I run `bash -c 'bundle exec rake middleware > middleware.dump'`}
250
+ end
251
+
252
+ Then /^the Airbrake middleware should be placed correctly$/ do
253
+ middleware_file = File.join(LOCAL_RAILS_ROOT, 'middleware.dump')
254
+ middleware = File.read(middleware_file).split(/\n/)
255
+ airbrake_index = middleware.rindex("use Airbrake::Rails::Middleware")
256
+ middleware_index = middleware.rindex("use ActionDispatch::DebugExceptions") ||
257
+ middleware.rindex("use ActionDispatch::ShowExceptions")
258
+ (airbrake_index > middleware_index).should be_true
259
+ end
260
+
@@ -6,7 +6,15 @@ end
6
6
  require 'net/http'
7
7
  require 'net/https'
8
8
  require 'rubygems'
9
- require 'active_support/core_ext/object/blank'
9
+
10
+ begin
11
+ require 'active_support/core_ext/object/blank'
12
+ rescue
13
+ require 'activesupport'
14
+ require 'activesupport/core_ext'
15
+ end
16
+
17
+
10
18
  require 'airbrake/version'
11
19
  require 'airbrake/configuration'
12
20
  require 'airbrake/notice'
@@ -75,6 +75,7 @@ module Airbrake
75
75
  def airbrake_current_user
76
76
  user = begin current_user rescue current_member end
77
77
  h = {}
78
+ return h if user.nil?
78
79
  Airbrake.configuration.user_attributes.map(&:to_sym).each do |attr|
79
80
  h[attr.to_sym] = user.send(attr) if user.respond_to? attr
80
81
  end
@@ -11,7 +11,18 @@ module Airbrake
11
11
  end
12
12
 
13
13
  initializer "airbrake.middleware" do |app|
14
- app.config.middleware.use "Airbrake::Rails::Middleware"
14
+
15
+ middleware = if defined?(ActionDispatch::DebugExceptions)
16
+ # Rails >= 3.2.0
17
+ "ActionDispatch::DebugExceptions"
18
+ else
19
+ # Rails < 3.2.0
20
+ "ActionDispatch::ShowExceptions"
21
+ end
22
+
23
+ app.config.middleware.insert_after middleware,
24
+ "Airbrake::Rails::Middleware"
25
+
15
26
  app.config.middleware.insert 0, "Airbrake::UserInformer"
16
27
  end
17
28
 
@@ -1,3 +1,3 @@
1
1
  module Airbrake
2
- VERSION = "3.1.7"
2
+ VERSION = "3.1.8"
3
3
  end
@@ -0,0 +1,37 @@
1
+ require File.expand_path '../helper', __FILE__
2
+
3
+ require 'airbrake/rails/controller_methods'
4
+
5
+ class TestController
6
+ include Airbrake::Rails::ControllerMethods
7
+
8
+ def current_user
9
+ nil
10
+ end
11
+ end
12
+
13
+ class ControllerMethodsTest < Test::Unit::TestCase
14
+ context "#airbrake_current_user" do
15
+ setup do
16
+
17
+ NilClass.class_eval do
18
+ @@called = false
19
+
20
+ def self.called
21
+ !! @@called
22
+ end
23
+
24
+ def id
25
+ @@called = true
26
+ end
27
+ end
28
+
29
+ @controller = TestController.new
30
+ end
31
+
32
+ should "not call #id on NilClass" do
33
+ @controller.send(:airbrake_current_user)
34
+ assert_equal false, NilClass.called
35
+ end
36
+ end
37
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airbrake
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.7
4
+ version: 3.1.8
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-01-28 00:00:00.000000000 Z
12
+ date: 2013-02-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: builder
@@ -329,6 +329,7 @@ files:
329
329
  - README.md
330
330
  - TESTED_AGAINST
331
331
  - install.rb
332
+ - test/controller_methods_test.rb
332
333
  - test/configuration_test.rb
333
334
  - test/airbrake_tasks_test.rb
334
335
  - test/catcher_test.rb
@@ -387,6 +388,7 @@ signing_key:
387
388
  specification_version: 3
388
389
  summary: Send your application errors to our hosted service and reclaim your inbox.
389
390
  test_files:
391
+ - test/controller_methods_test.rb
390
392
  - test/configuration_test.rb
391
393
  - test/airbrake_tasks_test.rb
392
394
  - test/catcher_test.rb