airbrake 3.1.14 → 3.1.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f5d5104d7048d7ec5ac80dc09ddbb2974e1ce942
4
+ data.tar.gz: 3ad35e7f986e2bd91e4765cc5e5df9f2b30116e0
5
+ SHA512:
6
+ metadata.gz: 1440f68e64b64bbd0356eda8c51548b9be6da7b294567b0b21c98d7ce72a80752a7e29bcf3bae858732ab04739655ac60a8fcceafbddd6228d0e7e42faf72886
7
+ data.tar.gz: b1d14e5341162d416cde27328b93b884c7f0e130b5973cd6f02a439a3fd45b5929abc8bde3218014dd369dc41dc2c7c409bea867e9627683c42c0d347ecdadf5
data/CHANGELOG CHANGED
@@ -1,3 +1,41 @@
1
+ Version 3.1.15 - 2014-01-03 14:37:38 +0100
2
+ ===============================================================================
3
+
4
+ Ahmad Sherif (1):
5
+ Don't serialize nil to an empty string
6
+
7
+ Damon Morgan (1):
8
+ Support sucker_punch for async processor
9
+
10
+ David Palm (1):
11
+ Give params_filter a setter so it can be *set* (not only appended to)
12
+
13
+ Hrvoje Šimić (14):
14
+ add Rails 4 to README.md
15
+ use Coveralls for code coverage
16
+ use Gemnasium for dependency monitoring
17
+ use Code Climate for code analysis
18
+ extract ParamsCleaner class
19
+ being more careful with javascript_notifier and non-public requests
20
+ Bumping to version 3.1.14
21
+ add Circle CI badge
22
+ rename :test task to 'test:unit'
23
+ use parallel gem installation on CI server
24
+ enable pry debugging in tests
25
+ add test for #251
26
+ enable filtering of sensitive Rack vars by default
27
+ start using MultiJson
28
+
29
+ Marko Šiftar (1):
30
+ fix deploy uri
31
+
32
+ Marten Veldthuis (1):
33
+ Airbrake rakefile is not compatible with Capistrano v3
34
+
35
+ Rodrigo Saito (1):
36
+ Handle error when variable sinatra.error is present
37
+
38
+
1
39
  Version 3.1.14 - 2013-08-22 09:03:14 +0200
2
40
  ===============================================================================
3
41
 
@@ -1236,5 +1274,6 @@ Nick Quaranto (3):
1236
1274
 
1237
1275
 
1238
1276
 
1277
+
1239
1278
 
1240
1279
 
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  Airbrake
2
2
  ========
3
3
 
4
+ [![Circle CI](https://circleci.com/gh/airbrake/airbrake/tree/master.png?circle_token=66cb9cfc6d20f550a2dbde522f5f0f9f81bd653b)](https://circleci.com/gh/airbrake/airbrake)
4
5
  [![Code Climate](https://codeclimate.com/github/airbrake/airbrake.png)](https://codeclimate.com/github/airbrake/airbrake)
5
6
  [![Coverage Status](https://coveralls.io/repos/airbrake/airbrake/badge.png?branch=master)](https://coveralls.io/r/airbrake/airbrake?branch=master)
6
7
  [![Dependency Status](https://gemnasium.com/airbrake/airbrake.png)](https://gemnasium.com/airbrake/airbrake)
@@ -20,7 +21,7 @@ For **SSL** verification see the [Resources](https://github.com/airbrake/airbrak
20
21
  Rails Installation
21
22
  ------------------
22
23
 
23
- ### Rails 3.x
24
+ ### Rails 3.x/4.x
24
25
 
25
26
  Add the airbrake gem to your Gemfile. In Gemfile:
26
27
 
@@ -100,7 +101,7 @@ Development
100
101
  For running unit tests, you should run
101
102
 
102
103
  bundle
103
- bundle exec rake test
104
+ bundle exec rake test:unit
104
105
 
105
106
  If you wish to run the entire suite, which checks the different framework
106
107
  integrations with cucumber, you should run the following commands
data/Rakefile CHANGED
@@ -15,27 +15,25 @@ require './lib/airbrake/version'
15
15
 
16
16
  Coveralls::RakeTask.new
17
17
 
18
- task :default => [:test, "test:integration", "coveralls:push"]
19
-
20
-
21
- desc 'Test the airbrake gem.'
22
- Rake::TestTask.new(:test) do |t|
23
- t.libs << 'lib'
24
- t.pattern = 'test/*_test.rb'
25
- t.verbose = true
26
- end
18
+ task :default => ["test:unit", "test:integration"]
27
19
 
28
20
  namespace :test do
29
- desc "Test the integration of airbrake gem with Rails."
21
+ Rake::TestTask.new(:unit) do |t|
22
+ t.libs << 'lib'
23
+ t.pattern = 'test/*_test.rb'
24
+ t.verbose = true
25
+ end
26
+
27
+ desc "Integration tests for all versions of Rails."
30
28
  task :integration do
31
29
  system 'INTEGRATION=true rake appraisal:rails-3.2 integration_test'\
32
30
  '&& INTEGRATION=true rake appraisal:rails-3.1 integration_test'\
33
31
  '&& INTEGRATION=true rake appraisal:rails-3.0 integration_test'\
32
+ '&& rake coveralls:push'\
34
33
  '&& INTEGRATION=true rake appraisal cucumber'
35
34
  end
36
35
  end
37
36
 
38
- desc "Test the integration of airbrake gem with Rails."
39
37
  Rake::TestTask.new(:integration_test) do |t|
40
38
  t.libs << 'lib'
41
39
  t.pattern = 'test/integration.rb'
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.test_files = Dir.glob("{test,spec,features}/**/*")
15
15
 
16
16
  s.add_runtime_dependency("builder")
17
- s.add_runtime_dependency("json")
17
+ s.add_runtime_dependency("multi_json")
18
18
 
19
19
  s.add_development_dependency("bourne", "~> 1.4.0")
20
20
  s.add_development_dependency("cucumber-rails","~> 1.1.1")
@@ -23,11 +23,12 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency("rspec", "~> 2.6.0")
24
24
  s.add_development_dependency("sham_rack", "~> 1.3.0")
25
25
  s.add_development_dependency("json-schema", "~> 1.0.12")
26
- s.add_development_dependency("capistrano")
26
+ s.add_development_dependency("capistrano", "~> 2.0")
27
27
  s.add_development_dependency("aruba")
28
28
  s.add_development_dependency("appraisal")
29
29
  s.add_development_dependency("rspec-rails")
30
30
  s.add_development_dependency("girl_friday")
31
+ s.add_development_dependency("sucker_punch")
31
32
  s.add_development_dependency("shoulda-matchers")
32
33
  s.add_development_dependency("shoulda-context")
33
34
  s.add_development_dependency("pry")
@@ -150,6 +150,20 @@ Feature: Install the Gem in a Rails application
150
150
  And the Airbrake notification should not contain "blue42"
151
151
  And the Airbrake notification should contain "FILTERED"
152
152
 
153
+ Scenario: Filtering sensitive Rack variables
154
+ When I configure the Airbrake shim
155
+ And I run `rails generate airbrake -k myapikey -t`
156
+ When I configure the notifier to use the following configuration lines:
157
+ """
158
+ config.logger = Logger.new STDOUT
159
+ """
160
+ And I define a response for "TestController#index":
161
+ """
162
+ raise RuntimeError
163
+ """
164
+ Then I should receive a Airbrake notification
165
+ And the Airbrake notification should not contain any of the sensitive Rack variables
166
+
153
167
  Scenario: Notify airbrake within the controller
154
168
  When I configure the Airbrake shim
155
169
  And I run `rails generate airbrake -k myapikey -t`
@@ -253,6 +253,13 @@ Then /^the Airbrake notification should contain user details$/ do
253
253
  step %{the last notice sent should contain "<id>1</id>"}
254
254
  end
255
255
 
256
+ Then /^the Airbrake notification should not contain any of the sensitive Rack variables$/ do
257
+ sensitive_rack_data_regex = FILTERED_RACK_VARS.map do |var|
258
+ Regexp.quote(var)
259
+ end.join("|")
260
+ step %{the last notice sent should not contain "#{sensitive_rack_data_regex}"}
261
+ end
262
+
256
263
  Then /^the last notice sent should contain "([^\"]*)"$/ do |data|
257
264
  last_notice = File.read(LAST_NOTICE)
258
265
  last_notice.should match(%r{#{data}})
@@ -263,7 +270,6 @@ Then /^the last notice sent should not contain "([^\"]*)"$/ do |data|
263
270
  last_notice.should_not match(%r{#{data}})
264
271
  end
265
272
 
266
-
267
273
  Then /^the Airbrake notification should contain the framework information$/ do
268
274
  step %{the last notice sent should contain "Rails: #{ENV["RAILS_VERSION"]}"}
269
275
  end
@@ -1,16 +1,20 @@
1
1
  require 'active_support'
2
2
  require 'nokogiri'
3
3
  require 'rspec'
4
- require "aruba/cucumber"
4
+ require 'aruba/cucumber'
5
+ require 'pry'
5
6
 
6
- PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')).freeze
7
- TEMP_DIR = File.join(PROJECT_ROOT, 'tmp').freeze
8
- LOCAL_RAILS_ROOT = File.join(TEMP_DIR, 'rails_root').freeze
9
- RACK_FILE = File.join(TEMP_DIR, 'rack_app.rb').freeze
10
- LAST_NOTICE = File.join(PROJECT_ROOT, 'resources', 'notice.xml')
7
+ PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')).freeze
8
+ TEMP_DIR = File.join(PROJECT_ROOT, 'tmp').freeze
9
+ LOCAL_RAILS_ROOT = File.join(TEMP_DIR, 'rails_root').freeze
10
+ RACK_FILE = File.join(TEMP_DIR, 'rack_app.rb').freeze
11
+ LAST_NOTICE = File.join(PROJECT_ROOT, 'resources', 'notice.xml')
12
+ ORIGINAL_RACK_FILTERS = File.join(PROJECT_ROOT, 'lib', 'airbrake', 'utils', 'rack_filters.rb')
11
13
 
12
14
  Before do
13
15
  FileUtils.rm_rf(LOCAL_RAILS_ROOT)
16
+
17
+ reload_rack_filters
14
18
  end
15
19
 
16
20
  When /^I reset Bundler environment variable$/ do
@@ -23,3 +27,11 @@ def prepend_path(path)
23
27
  ENV['PATH'] = path + ":" + ENV['PATH']
24
28
  end
25
29
 
30
+ def reload_rack_filters
31
+ original_filters = File.read(ORIGINAL_RACK_FILTERS)
32
+
33
+ File.write(File.join(TEMP_DIR, "rack_filters.rb"),
34
+ original_filters.lines[1..-2].join("\n"))
35
+
36
+ require File.join(TEMP_DIR, "rack_filters.rb")
37
+ end
@@ -3,12 +3,19 @@ begin
3
3
  rescue LoadError
4
4
  end
5
5
 
6
+ begin
7
+ require "sucker_punch"
8
+ rescue LoadError
9
+ end
10
+
6
11
  require 'net/http'
7
12
  require 'net/https'
8
13
  require 'rubygems'
9
14
  require 'logger'
10
15
 
11
16
  require 'airbrake/version'
17
+ require 'airbrake/jobs/send_job'
18
+ require 'airbrake/utils/rack_filters'
12
19
  require 'airbrake/utils/params_cleaner'
13
20
  require 'airbrake/configuration'
14
21
  require 'airbrake/notice'
@@ -30,7 +30,7 @@ module Client
30
30
 
31
31
  def create_deploy
32
32
  uri = URI.parse "http://airbrake.io"\
33
- "/projects/1/deploys.xml"
33
+ "/deploys.txt"
34
34
  http = Net::HTTP.new(uri.host,uri.port)
35
35
  request = Net::HTTP::Post.new(uri.request_uri)
36
36
  opts = {'deploy[rails_env]' => options.rails_env,"api_key" => options.api_key}
@@ -53,7 +53,7 @@ module Airbrake
53
53
 
54
54
  # A list of parameters that should be filtered out of what is sent to Airbrake.
55
55
  # By default, all "password" attributes will have their contents replaced.
56
- attr_reader :params_filters
56
+ attr_accessor :params_filters
57
57
 
58
58
  # A list of filters for cleaning and pruning the backtrace. See #filter_backtrace.
59
59
  attr_reader :backtrace_filters
@@ -336,13 +336,17 @@ module Airbrake
336
336
 
337
337
  # Async notice delivery defaults to girl friday
338
338
  def default_async_processor
339
- queue = GirlFriday::WorkQueue.new(nil, :size => 3) do |notice|
340
- Airbrake.sender.send_to_airbrake(notice)
339
+ if defined?(SuckerPunch)
340
+ lambda {|notice| SendJob.new.async.perform(notice)}
341
+ elsif defined?(GirlFriday)
342
+ queue = GirlFriday::WorkQueue.new(nil, :size => 3) do |notice|
343
+ Airbrake.sender.send_to_airbrake(notice)
344
+ end
345
+ lambda {|notice| queue << notice}
346
+ else
347
+ warn "[AIRBRAKE] You can't use the default async handler without sucker_punch or girl_friday."\
348
+ " Please make sure you have sucker_punch or girl_friday installed (sucker_punch is recommended)."
341
349
  end
342
- lambda {|notice| queue << notice}
343
- rescue NameError
344
- warn "[AIRBRAKE] You can't use the default async handler without girl_friday."\
345
- " Please make sure you have girl_friday installed."
346
350
  end
347
351
 
348
352
  def validate_user_attributes(user_attributes)
@@ -0,0 +1,7 @@
1
+ class SendJob
2
+ include SuckerPunch::Job if defined?(SuckerPunch)
3
+
4
+ def perform(notice)
5
+ Airbrake.sender.send_to_airbrake(notice)
6
+ end
7
+ end
@@ -1,5 +1,6 @@
1
1
  require 'builder'
2
2
  require 'socket'
3
+ require 'multi_json'
3
4
 
4
5
  module Airbrake
5
6
  class Notice
@@ -202,7 +203,7 @@ module Airbrake
202
203
  end
203
204
 
204
205
  def to_json
205
- {
206
+ MultiJson.dump({
206
207
  'notifier' => {
207
208
  'name' => 'airbrake',
208
209
  'version' => Airbrake::VERSION,
@@ -239,7 +240,7 @@ module Airbrake
239
240
  hash['environment'] = cgi_data unless cgi_data.empty?
240
241
  hash['params'] = parameters unless parameters.empty?
241
242
  hash['session'] = session_data unless session_data.empty?
242
- end.to_json
243
+ end)
243
244
  end
244
245
 
245
246
  # Determines if this notice should be ignored
@@ -55,7 +55,7 @@ module Airbrake
55
55
  end
56
56
 
57
57
  def framework_exception(env)
58
- env['rack.exception']
58
+ env['rack.exception'] || env['sinatra.error']
59
59
  end
60
60
 
61
61
  end
@@ -55,8 +55,9 @@ module Airbrake
55
55
 
56
56
  def clean_rack_request_data
57
57
  if @cgi_data
58
- @cgi_data.delete("rack.request.form_vars")
59
- @cgi_data.delete("action_dispatch.secret_token")
58
+ Airbrake::FILTERED_RACK_VARS.each do |var|
59
+ @cgi_data.delete var
60
+ end
60
61
  end
61
62
  end
62
63
 
@@ -90,7 +91,7 @@ module Airbrake
90
91
  clean_unserializable_data(value, stack + [data.object_id])
91
92
  end
92
93
  else
93
- data.to_s
94
+ data.nil? ? nil : data.to_s
94
95
  end
95
96
  end
96
97
  end
@@ -0,0 +1,39 @@
1
+ module Airbrake
2
+ SENSITIVE_RACK_VARS = %w(
3
+ HTTP_X_CSRF_TOKEN
4
+ HTTP_COOKIE
5
+
6
+ action_dispatch.request.unsigned_session_cookie
7
+ action_dispatch.cookies
8
+ action_dispatch.unsigned_session_cookie
9
+ action_dispatch.secret_key_base
10
+ action_dispatch.signed_cookie_salt
11
+ action_dispatch.encrypted_cookie_salt
12
+ action_dispatch.encrypted_signed_cookie_salt
13
+ action_dispatch.http_auth_salt
14
+ action_dispatch.secret_token
15
+
16
+ rack.request.cookie_hash
17
+ rack.request.cookie_string
18
+ rack.request.form_vars
19
+
20
+ rack.session
21
+ rack.session.options
22
+ )
23
+
24
+ RACK_VARS_CONTAINING_INSTANCES = %w(
25
+ action_controller.instance
26
+
27
+ action_dispatch.backtrace_cleaner
28
+ action_dispatch.routes
29
+ action_dispatch.logger
30
+ action_dispatch.key_generator
31
+
32
+ rack-cache.storage
33
+
34
+ rack.errors
35
+ rack.input
36
+ )
37
+
38
+ FILTERED_RACK_VARS = SENSITIVE_RACK_VARS + RACK_VARS_CONTAINING_INSTANCES
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Airbrake
2
- VERSION = "3.1.14"
2
+ VERSION = "3.1.15"
3
3
  end
@@ -1,2 +1 @@
1
- <?xml version="1.0" encoding="UTF-8"?><notice version="2.4"><api-key>myapikey</api-key><notifier><name>Airbrake Notifier</name><version>3.1.13</version><url>https://github.com/airbrake/airbrake</url></notifier><error><class>AirbrakeTestingException</class><message>AirbrakeTestingException:
2
- Testing airbrake via "rake airbrake:test". If you can see this, it works.</message><backtrace><line number="432" file="[GEM_ROOT]/gems/activesupport-3.0.20/lib/active_support/callbacks.rb" method="_run__1847088340968181607__process_action__2679515661620244747__callbacks"/><line number="410" file="[GEM_ROOT]/gems/activesupport-3.0.20/lib/active_support/callbacks.rb" method="_run_process_action_callbacks"/><line number="94" file="[GEM_ROOT]/gems/activesupport-3.0.20/lib/active_support/callbacks.rb" method="run_callbacks"/><line number="17" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/abstract_controller/callbacks.rb" method="process_action"/><line number="17" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_controller/metal/rescue.rb" method="process_action"/><line number="30" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_controller/metal/instrumentation.rb" method="block in process_action"/><line number="52" file="[GEM_ROOT]/gems/activesupport-3.0.20/lib/active_support/notifications.rb" method="block in instrument"/><line number="21" file="[GEM_ROOT]/gems/activesupport-3.0.20/lib/active_support/notifications/instrumenter.rb" method="instrument"/><line number="52" file="[GEM_ROOT]/gems/activesupport-3.0.20/lib/active_support/notifications.rb" method="instrument"/><line number="29" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_controller/metal/instrumentation.rb" method="process_action"/><line number="119" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/abstract_controller/base.rb" method="process"/><line number="41" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/abstract_controller/rendering.rb" method="process"/><line number="138" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_controller/metal.rb" method="dispatch"/><line number="14" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_controller/metal/rack_delegation.rb" method="dispatch"/><line number="178" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_controller/metal.rb" method="block in action"/><line number="68" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/routing/route_set.rb" method="call"/><line number="68" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/routing/route_set.rb" method="dispatch"/><line number="33" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/routing/route_set.rb" method="call"/><line number="148" file="[GEM_ROOT]/gems/rack-mount-0.6.14/lib/rack/mount/route_set.rb" method="block in call"/><line number="93" file="[GEM_ROOT]/gems/rack-mount-0.6.14/lib/rack/mount/code_generation.rb" method="block in recognize"/><line number="68" file="[GEM_ROOT]/gems/rack-mount-0.6.14/lib/rack/mount/code_generation.rb" method="optimized_each"/><line number="92" file="[GEM_ROOT]/gems/rack-mount-0.6.14/lib/rack/mount/code_generation.rb" method="recognize"/><line number="139" file="[GEM_ROOT]/gems/rack-mount-0.6.14/lib/rack/mount/route_set.rb" method="call"/><line number="499" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/routing/route_set.rb" method="call"/><line number="17" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/best_standards_support.rb" method="call"/><line number="14" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/head.rb" method="call"/><line number="24" file="[GEM_ROOT]/gems/rack-1.2.8/lib/rack/methodoverride.rb" method="call"/><line number="21" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/params_parser.rb" method="call"/><line number="182" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/flash.rb" method="call"/><line number="149" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/session/abstract_store.rb" method="call"/><line number="302" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/cookies.rb" method="call"/><line number="46" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/callbacks.rb" method="block in call"/><line number="416" file="[GEM_ROOT]/gems/activesupport-3.0.20/lib/active_support/callbacks.rb" method="_run_call_callbacks"/><line number="44" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/callbacks.rb" method="call"/><line number="106" file="[GEM_ROOT]/gems/rack-1.2.8/lib/rack/sendfile.rb" method="call"/><line number="48" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/remote_ip.rb" method="call"/><line number="13" file="[GEM_ROOT]/gems/railties-3.0.20/lib/rails/rack/logger.rb" method="call"/><line number="17" file="[GEM_ROOT]/gems/rack-1.2.8/lib/rack/runtime.rb" method="call"/><line number="72" file="[GEM_ROOT]/gems/activesupport-3.0.20/lib/active_support/cache/strategy/local_cache.rb" method="call"/><line number="13" file="[GEM_ROOT]/gems/rack-1.2.8/lib/rack/lock.rb" method="block in call"/><line number="" file="" method=""/><line number="13" file="[GEM_ROOT]/gems/rack-1.2.8/lib/rack/lock.rb" method="call"/><line number="30" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/static.rb" method="call"/><line number="168" file="[GEM_ROOT]/gems/railties-3.0.20/lib/rails/application.rb" method="call"/><line number="236" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/task.rb" method="call"/><line number="236" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/task.rb" method="block in execute"/><line number="231" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/task.rb" method="each"/><line number="231" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/task.rb" method="execute"/><line number="175" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/task.rb" method="block in invoke_with_call_chain"/><line number="211" file="/opt/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/monitor.rb" method="mon_synchronize"/><line number="168" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/task.rb" method="invoke_with_call_chain"/><line number="161" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/task.rb" method="invoke"/><line number="149" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/application.rb" method="invoke_task"/><line number="106" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/application.rb" method="block (2 levels) in top_level"/><line number="106" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/application.rb" method="each"/><line number="106" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/application.rb" method="block in top_level"/><line number="115" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/application.rb" method="run_with_threads"/><line number="100" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/application.rb" method="top_level"/><line number="78" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/application.rb" method="block in run"/><line number="165" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/application.rb" method="standard_exception_handling"/><line number="75" file="[GEM_ROOT]/gems/rake-10.1.0/lib/rake/application.rb" method="run"/><line number="33" file="[GEM_ROOT]/gems/rake-10.1.0/bin/rake" method="&lt;top (required)&gt;"/><line number="23" file="[GEM_ROOT]/bin/rake" method="load"/><line number="23" file="[GEM_ROOT]/bin/rake" method="&lt;main&gt;"/></backtrace></error><request><url>http://www.example.com/verify</url><component>application</component><action>verify</action><params><var key="action">verify</var><var key="controller">application</var></params><cgi-data><var key="rack.version">["1", "1"]</var><var key="rack.input">#&lt;StringIO:0x0000000357f410&gt;</var><var key="rack.errors">#&lt;StringIO:0x0000000357f4b0&gt;</var><var key="rack.multithread">false</var><var key="rack.multiprocess">true</var><var key="rack.run_once">false</var><var key="REQUEST_METHOD">GET</var><var key="SERVER_NAME">www.example.com</var><var key="SERVER_PORT">80</var><var key="QUERY_STRING"></var><var key="PATH_INFO">/verify</var><var key="rack.url_scheme">http</var><var key="HTTPS">off</var><var key="SCRIPT_NAME"></var><var key="CONTENT_LENGTH">0</var><var key="action_dispatch.parameter_filter">["password"]</var><var key="action_dispatch.show_exceptions">false</var><var key="action_dispatch.remote_ip"></var><var key="rack.session"></var><var key="rack.session.options"><var key="path">/</var><var key="domain"></var><var key="expire_after"></var><var key="secure">false</var><var key="httponly">true</var><var key="id"></var></var><var key="action_dispatch.cookies"></var><var key="action_dispatch.request.unsigned_session_cookie"></var><var key="action_dispatch.request.path_parameters"><var key="action">verify</var><var key="controller">application</var></var><var key="action_controller.instance">#&lt;ApplicationController:0x000000035906e8&gt;</var><var key="action_dispatch.request.content_type"></var><var key="action_dispatch.request.request_parameters"></var><var key="rack.request.query_string"></var><var key="rack.request.query_hash"></var><var key="action_dispatch.request.query_parameters"></var><var key="action_dispatch.request.parameters"><var key="action">verify</var><var key="controller">application</var></var><var key="action_dispatch.request.formats">["text/html"]</var></cgi-data></request><server-environment><project-root>/home/hrvoje/code/work/airbrake/tmp/rails_root</project-root><environment-name>test</environment-name><hostname>hrvoje-Aspire-5741G</hostname></server-environment><framework>Rails: 3.0.20</framework></notice>
1
+ <?xml version="1.0" encoding="UTF-8"?><notice version="2.4"><api-key/><notifier><name>Airbrake Notifier</name><version>3.1.15</version><url>https://github.com/airbrake/airbrake</url></notifier><error><class>RuntimeError</class><message>RuntimeError: Explode!</message><backtrace><line number="3" file="[PROJECT_ROOT]/app/metal/exploder.rb" method="call"/><line number="71" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/journey/router.rb" method="block in call"/><line number="59" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/journey/router.rb" method="each"/><line number="59" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/journey/router.rb" method="call"/><line number="680" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/routing/route_set.rb" method="call"/><line number="23" file="[GEM_ROOT]/gems/rack-1.5.2/lib/rack/etag.rb" method="call"/><line number="25" file="[GEM_ROOT]/gems/rack-1.5.2/lib/rack/conditionalget.rb" method="call"/><line number="11" file="[GEM_ROOT]/gems/rack-1.5.2/lib/rack/head.rb" method="call"/><line number="27" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/middleware/params_parser.rb" method="call"/><line number="241" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/middleware/flash.rb" method="call"/><line number="225" file="[GEM_ROOT]/gems/rack-1.5.2/lib/rack/session/abstract/id.rb" method="context"/><line number="220" file="[GEM_ROOT]/gems/rack-1.5.2/lib/rack/session/abstract/id.rb" method="call"/><line number="486" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/middleware/cookies.rb" method="call"/><line number="29" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/middleware/callbacks.rb" method="block in call"/><line number="373" file="[GEM_ROOT]/gems/activesupport-4.0.1/lib/active_support/callbacks.rb" method="_run__819093073471175117__call__callbacks"/><line number="80" file="[GEM_ROOT]/gems/activesupport-4.0.1/lib/active_support/callbacks.rb" method="run_callbacks"/><line number="27" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/middleware/callbacks.rb" method="call"/><line number="76" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/middleware/remote_ip.rb" method="call"/><line number="17" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/middleware/debug_exceptions.rb" method="call"/><line number="30" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/middleware/show_exceptions.rb" method="call"/><line number="38" file="[GEM_ROOT]/gems/railties-4.0.1/lib/rails/rack/logger.rb" method="call_app"/><line number="20" file="[GEM_ROOT]/gems/railties-4.0.1/lib/rails/rack/logger.rb" method="block in call"/><line number="67" file="[GEM_ROOT]/gems/activesupport-4.0.1/lib/active_support/tagged_logging.rb" method="block in tagged"/><line number="25" file="[GEM_ROOT]/gems/activesupport-4.0.1/lib/active_support/tagged_logging.rb" method="tagged"/><line number="67" file="[GEM_ROOT]/gems/activesupport-4.0.1/lib/active_support/tagged_logging.rb" method="tagged"/><line number="20" file="[GEM_ROOT]/gems/railties-4.0.1/lib/rails/rack/logger.rb" method="call"/><line number="21" file="[GEM_ROOT]/gems/actionpack-4.0.1/lib/action_dispatch/middleware/request_id.rb" method="call"/><line number="21" file="[GEM_ROOT]/gems/rack-1.5.2/lib/rack/methodoverride.rb" method="call"/><line number="17" file="[GEM_ROOT]/gems/rack-1.5.2/lib/rack/runtime.rb" method="call"/><line number="83" file="[GEM_ROOT]/gems/activesupport-4.0.1/lib/active_support/cache/strategy/local_cache.rb" method="call"/><line number="112" file="[GEM_ROOT]/gems/rack-1.5.2/lib/rack/sendfile.rb" method="call"/><line number="511" file="[GEM_ROOT]/gems/railties-4.0.1/lib/rails/engine.rb" method="call"/><line number="97" file="[GEM_ROOT]/gems/railties-4.0.1/lib/rails/application.rb" method="call"/><line number="30" file="[GEM_ROOT]/gems/railties-4.0.1/lib/rails/railtie/configurable.rb" method="method_missing"/><line number="4" file="request.rb" method="&lt;top (required)&gt;"/><line number="51" file="[GEM_ROOT]/gems/railties-4.0.1/lib/rails/commands/runner.rb" method="eval"/><line number="51" file="[GEM_ROOT]/gems/railties-4.0.1/lib/rails/commands/runner.rb" method="&lt;top (required)&gt;"/><line number="84" file="[GEM_ROOT]/gems/railties-4.0.1/lib/rails/commands.rb" method="require"/><line number="84" file="[GEM_ROOT]/gems/railties-4.0.1/lib/rails/commands.rb" method="&lt;top (required)&gt;"/><line number="4" file="bin/rails" method="require"/><line number="4" file="bin/rails" method="&lt;main&gt;"/></backtrace></error><request><url>http://example.com:123metal/index?param=value</url><component/><action/><params><var key="param">value</var></params><cgi-data><var key="rack.version">["1", "2"]</var><var key="rack.multithread">true</var><var key="rack.multiprocess">true</var><var key="rack.run_once">false</var><var key="REQUEST_METHOD">GET</var><var key="SERVER_NAME">example.com</var><var key="SERVER_PORT">123</var><var key="QUERY_STRING">param=value</var><var key="PATH_INFO">metal/index</var><var key="rack.url_scheme">http</var><var key="HTTPS">off</var><var key="SCRIPT_NAME"></var><var key="CONTENT_LENGTH">0</var><var key="ORIGINAL_FULLPATH">/metal/index?param=value</var><var key="ORIGINAL_SCRIPT_NAME"></var><var key="action_dispatch.parameter_filter">["password"]</var><var key="action_dispatch.redirect_filter">[]</var><var key="action_dispatch.show_exceptions">true</var><var key="action_dispatch.show_detailed_exceptions">false</var><var key="ROUTES_69827320290920_SCRIPT_NAME"></var><var key="action_dispatch.request_id">64c13a82-6970-45d3-92be-41bd70360734</var><var key="action_dispatch.remote_ip"></var><var key="action_dispatch.request.path_parameters"></var><var key="rack.request.query_string">param=value</var><var key="rack.request.query_hash"><var key="param">value</var></var></cgi-data></request><server-environment><project-root>/home/shime/code/work/airbrake/tmp/rails_root</project-root><environment-name>production</environment-name><hostname>SyntaxError</hostname></server-environment><framework>Rails: 4.0.1</framework></notice>
@@ -34,7 +34,7 @@ class ConfigurationTest < Test::Unit::TestCase
34
34
  assert_config_default :project_id, nil
35
35
  end
36
36
 
37
- should "set GirlFriday-callable for async=true" do
37
+ should "set GirlFriday/SuckerPunch-callable for async=true" do
38
38
  config = Airbrake::Configuration.new
39
39
  config.async = true
40
40
  assert config.async.respond_to?(:call)
@@ -88,6 +88,7 @@ class ConfigurationTest < Test::Unit::TestCase
88
88
  assert_config_overridable :logger
89
89
  assert_config_overridable :async
90
90
  assert_config_overridable :project_id
91
+ assert_config_overridable :params_filters
91
92
  end
92
93
 
93
94
  should "have an api key" do
@@ -42,6 +42,7 @@ silence_warnings do
42
42
  require "shoulda-matchers"
43
43
  require "shoulda-context"
44
44
  require "fakeweb"
45
+ require "pry"
45
46
 
46
47
  begin require 'redgreen'; rescue LoadError; end
47
48
  end
@@ -9,7 +9,7 @@ class ParamsCleanerTest < Test::Unit::TestCase
9
9
  end
10
10
 
11
11
  def assert_serializes_hash(attribute)
12
- [File.open(__FILE__), Proc.new { puts "boo!" }, Module.new].each do |object|
12
+ [File.open(__FILE__), Proc.new { puts "boo!" }, Module.new, nil].each do |object|
13
13
  hash = {
14
14
  :strange_object => object,
15
15
  :sub_hash => {
@@ -19,11 +19,12 @@ class ParamsCleanerTest < Test::Unit::TestCase
19
19
  }
20
20
  clean_params = clean(attribute => hash)
21
21
  hash = clean_params.send(attribute)
22
- assert_equal object.to_s, hash[:strange_object], "objects should be serialized"
22
+ object_serialized = object.nil? ? nil : object.to_s
23
+ assert_equal object_serialized, hash[:strange_object], "objects should be serialized"
23
24
  assert_kind_of Hash, hash[:sub_hash], "subhashes should be kept"
24
- assert_equal object.to_s, hash[:sub_hash][:sub_object], "subhash members should be serialized"
25
+ assert_equal object_serialized, hash[:sub_hash][:sub_object], "subhash members should be serialized"
25
26
  assert_kind_of Array, hash[:array], "arrays should be kept"
26
- assert_equal object.to_s, hash[:array].first, "array members should be serialized"
27
+ assert_equal object_serialized, hash[:array].first, "array members should be serialized"
27
28
  end
28
29
  end
29
30
 
@@ -35,24 +35,28 @@ class RackTest < Test::Unit::TestCase
35
35
  end
36
36
  end
37
37
 
38
- should "deliver an exception in rack.exception" do
39
- Airbrake.stubs(:notify_or_ignore)
40
- exception = build_exception
41
- environment = { 'key' => 'value' }
42
-
43
- response = [200, {}, ['okay']]
44
- app = lambda do |env|
45
- env['rack.exception'] = exception
46
- response
47
- end
48
- stack = Airbrake::Rack.new(app)
38
+ %w(rack.exception sinatra.error).each do |ex|
39
+
40
+ should "deliver an exception in #{ex}" do
41
+ Airbrake.stubs(:notify_or_ignore)
42
+ exception = build_exception
43
+ environment = { 'key' => 'value' }
44
+
45
+ response = [200, {}, ['okay']]
46
+ app = lambda do |env|
47
+ env[ex] = exception
48
+ response
49
+ end
50
+ stack = Airbrake::Rack.new(app)
49
51
 
50
- actual_response = stack.call(environment)
52
+ actual_response = stack.call(environment)
51
53
 
52
- assert_equal response, actual_response
53
- assert_received(Airbrake, :notify_or_ignore) do |expect|
54
- expect.with(exception, :rack_env => environment)
54
+ assert_equal response, actual_response
55
+ assert_received(Airbrake, :notify_or_ignore) do |expect|
56
+ expect.with(exception, :rack_env => environment)
57
+ end
55
58
  end
59
+
56
60
  end
57
61
 
58
62
  end
metadata CHANGED
@@ -1,52 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airbrake
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.14
5
- prerelease:
4
+ version: 3.1.15
6
5
  platform: ruby
7
6
  authors:
8
7
  - Airbrake
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-22 00:00:00.000000000 Z
11
+ date: 2014-01-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: builder
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
- name: json
28
+ name: multi_json
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: bourne
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: cucumber-rails
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: fakeweb
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ~>
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ~>
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: nokogiri
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ~>
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ~>
108
95
  - !ruby/object:Gem::Version
@@ -110,7 +97,6 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: rspec
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ~>
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - ~>
124
109
  - !ruby/object:Gem::Version
@@ -126,7 +111,6 @@ dependencies:
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: sham_rack
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
115
  - - ~>
132
116
  - !ruby/object:Gem::Version
@@ -134,7 +118,6 @@ dependencies:
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
122
  - - ~>
140
123
  - !ruby/object:Gem::Version
@@ -142,7 +125,6 @@ dependencies:
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: json-schema
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
129
  - - ~>
148
130
  - !ruby/object:Gem::Version
@@ -150,7 +132,6 @@ dependencies:
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
136
  - - ~>
156
137
  - !ruby/object:Gem::Version
@@ -158,145 +139,141 @@ dependencies:
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: capistrano
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - ~>
164
144
  - !ruby/object:Gem::Version
165
- version: '0'
145
+ version: '2.0'
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - ~>
172
151
  - !ruby/object:Gem::Version
173
- version: '0'
152
+ version: '2.0'
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: aruba
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
- - - ! '>='
157
+ - - '>='
180
158
  - !ruby/object:Gem::Version
181
159
  version: '0'
182
160
  type: :development
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
- - - ! '>='
164
+ - - '>='
188
165
  - !ruby/object:Gem::Version
189
166
  version: '0'
190
167
  - !ruby/object:Gem::Dependency
191
168
  name: appraisal
192
169
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
170
  requirements:
195
- - - ! '>='
171
+ - - '>='
196
172
  - !ruby/object:Gem::Version
197
173
  version: '0'
198
174
  type: :development
199
175
  prerelease: false
200
176
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
177
  requirements:
203
- - - ! '>='
178
+ - - '>='
204
179
  - !ruby/object:Gem::Version
205
180
  version: '0'
206
181
  - !ruby/object:Gem::Dependency
207
182
  name: rspec-rails
208
183
  requirement: !ruby/object:Gem::Requirement
209
- none: false
210
184
  requirements:
211
- - - ! '>='
185
+ - - '>='
212
186
  - !ruby/object:Gem::Version
213
187
  version: '0'
214
188
  type: :development
215
189
  prerelease: false
216
190
  version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
191
  requirements:
219
- - - ! '>='
192
+ - - '>='
220
193
  - !ruby/object:Gem::Version
221
194
  version: '0'
222
195
  - !ruby/object:Gem::Dependency
223
196
  name: girl_friday
224
197
  requirement: !ruby/object:Gem::Requirement
225
- none: false
226
198
  requirements:
227
- - - ! '>='
199
+ - - '>='
228
200
  - !ruby/object:Gem::Version
229
201
  version: '0'
230
202
  type: :development
231
203
  prerelease: false
232
204
  version_requirements: !ruby/object:Gem::Requirement
233
- none: false
234
205
  requirements:
235
- - - ! '>='
206
+ - - '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: sucker_punch
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - '>='
236
221
  - !ruby/object:Gem::Version
237
222
  version: '0'
238
223
  - !ruby/object:Gem::Dependency
239
224
  name: shoulda-matchers
240
225
  requirement: !ruby/object:Gem::Requirement
241
- none: false
242
226
  requirements:
243
- - - ! '>='
227
+ - - '>='
244
228
  - !ruby/object:Gem::Version
245
229
  version: '0'
246
230
  type: :development
247
231
  prerelease: false
248
232
  version_requirements: !ruby/object:Gem::Requirement
249
- none: false
250
233
  requirements:
251
- - - ! '>='
234
+ - - '>='
252
235
  - !ruby/object:Gem::Version
253
236
  version: '0'
254
237
  - !ruby/object:Gem::Dependency
255
238
  name: shoulda-context
256
239
  requirement: !ruby/object:Gem::Requirement
257
- none: false
258
240
  requirements:
259
- - - ! '>='
241
+ - - '>='
260
242
  - !ruby/object:Gem::Version
261
243
  version: '0'
262
244
  type: :development
263
245
  prerelease: false
264
246
  version_requirements: !ruby/object:Gem::Requirement
265
- none: false
266
247
  requirements:
267
- - - ! '>='
248
+ - - '>='
268
249
  - !ruby/object:Gem::Version
269
250
  version: '0'
270
251
  - !ruby/object:Gem::Dependency
271
252
  name: pry
272
253
  requirement: !ruby/object:Gem::Requirement
273
- none: false
274
254
  requirements:
275
- - - ! '>='
255
+ - - '>='
276
256
  - !ruby/object:Gem::Version
277
257
  version: '0'
278
258
  type: :development
279
259
  prerelease: false
280
260
  version_requirements: !ruby/object:Gem::Requirement
281
- none: false
282
261
  requirements:
283
- - - ! '>='
262
+ - - '>='
284
263
  - !ruby/object:Gem::Version
285
264
  version: '0'
286
265
  - !ruby/object:Gem::Dependency
287
266
  name: coveralls
288
267
  requirement: !ruby/object:Gem::Requirement
289
- none: false
290
268
  requirements:
291
- - - ! '>='
269
+ - - '>='
292
270
  - !ruby/object:Gem::Version
293
271
  version: '0'
294
272
  type: :development
295
273
  prerelease: false
296
274
  version_requirements: !ruby/object:Gem::Requirement
297
- none: false
298
275
  requirements:
299
- - - ! '>='
276
+ - - '>='
300
277
  - !ruby/object:Gem::Version
301
278
  version: '0'
302
279
  description:
@@ -306,52 +283,54 @@ executables:
306
283
  extensions: []
307
284
  extra_rdoc_files: []
308
285
  files:
309
- - generators/airbrake/airbrake_generator.rb
310
- - generators/airbrake/templates/airbrake_tasks.rake
311
- - generators/airbrake/templates/initializer.rb
312
- - generators/airbrake/templates/capistrano_hook.rb
313
286
  - generators/airbrake/lib/rake_commands.rb
314
287
  - generators/airbrake/lib/insert_commands.rb
288
+ - generators/airbrake/templates/initializer.rb
289
+ - generators/airbrake/templates/capistrano_hook.rb
290
+ - generators/airbrake/templates/airbrake_tasks.rake
291
+ - generators/airbrake/airbrake_generator.rb
292
+ - lib/templates/rescue.erb
293
+ - lib/templates/javascript_notifier_configuration
294
+ - lib/templates/javascript_notifier_loader
295
+ - lib/airbrake_tasks.rb
315
296
  - lib/airbrake.rb
316
- - lib/airbrake/railtie.rb
317
- - lib/airbrake/shared_tasks.rb
318
- - lib/airbrake/backtrace.rb
319
- - lib/airbrake/rails.rb
320
- - lib/airbrake/version.rb
321
297
  - lib/airbrake/rails3_tasks.rb
322
- - lib/airbrake/utils/params_cleaner.rb
323
- - lib/airbrake/user_informer.rb
324
- - lib/airbrake/cli/project_factory.rb
325
- - lib/airbrake/cli/printer.rb
326
- - lib/airbrake/cli/project.rb
327
- - lib/airbrake/cli/client.rb
328
- - lib/airbrake/cli/options.rb
329
298
  - lib/airbrake/cli/runner.rb
299
+ - lib/airbrake/cli/options.rb
330
300
  - lib/airbrake/cli/validator.rb
331
- - lib/airbrake/notice.rb
301
+ - lib/airbrake/cli/client.rb
302
+ - lib/airbrake/cli/project_factory.rb
303
+ - lib/airbrake/cli/project.rb
304
+ - lib/airbrake/cli/printer.rb
305
+ - lib/airbrake/sinatra.rb
306
+ - lib/airbrake/utils/rack_filters.rb
307
+ - lib/airbrake/utils/params_cleaner.rb
308
+ - lib/airbrake/configuration.rb
309
+ - lib/airbrake/railtie.rb
332
310
  - lib/airbrake/rack.rb
311
+ - lib/airbrake/user_informer.rb
312
+ - lib/airbrake/response.rb
313
+ - lib/airbrake/rake_handler.rb
314
+ - lib/airbrake/sender.rb
315
+ - lib/airbrake/capistrano.rb
333
316
  - lib/airbrake/tasks.rb
334
- - lib/airbrake/configuration.rb
335
- - lib/airbrake/rails/controller_methods.rb
317
+ - lib/airbrake/shared_tasks.rb
336
318
  - lib/airbrake/rails/error_lookup.rb
337
319
  - lib/airbrake/rails/javascript_notifier.rb
338
- - lib/airbrake/rails/middleware.rb
339
320
  - lib/airbrake/rails/action_controller_catcher.rb
340
- - lib/airbrake/sender.rb
341
- - lib/airbrake/capistrano.rb
342
- - lib/airbrake/rake_handler.rb
343
- - lib/airbrake/sinatra.rb
344
- - lib/airbrake/response.rb
321
+ - lib/airbrake/rails/middleware.rb
322
+ - lib/airbrake/rails/controller_methods.rb
323
+ - lib/airbrake/jobs/send_job.rb
324
+ - lib/airbrake/notice.rb
325
+ - lib/airbrake/rails.rb
326
+ - lib/airbrake/backtrace.rb
327
+ - lib/airbrake/version.rb
345
328
  - lib/rails/generators/airbrake/airbrake_generator.rb
346
- - lib/templates/javascript_notifier_configuration
347
- - lib/templates/rescue.erb
348
- - lib/templates/javascript_notifier_loader
349
- - lib/airbrake_tasks.rb
350
329
  - rails/init.rb
351
330
  - resources/ca-bundle.crt
352
- - resources/README.md
353
- - resources/airbrake_3_0.json
354
331
  - resources/notice.xml
332
+ - resources/airbrake_3_0.json
333
+ - resources/README.md
355
334
  - script/integration_test.rb
356
335
  - airbrake.gemspec
357
336
  - CHANGELOG
@@ -364,103 +343,102 @@ files:
364
343
  - README.md
365
344
  - TESTED_AGAINST
366
345
  - install.rb
367
- - test/recursion_test.rb
368
- - test/sender_test.rb
346
+ - test/rails_initializer_test.rb
369
347
  - test/integration/javascript_notifier_test.rb
370
348
  - test/integration/catcher_test.rb
371
- - test/notifier_test.rb
372
- - test/params_cleaner_test.rb
349
+ - test/support/response_shim.xml
350
+ - test/logger_test.rb
351
+ - test/rack_test.rb
373
352
  - test/configuration_test.rb
374
- - test/integration.rb
375
- - test/airbrake_tasks_test.rb
376
353
  - test/controller_methods_test.rb
377
- - test/rack_test.rb
378
- - test/response_test.rb
354
+ - test/notifier_test.rb
355
+ - test/airbrake_tasks_test.rb
356
+ - test/sender_test.rb
357
+ - test/capistrano_test.rb
358
+ - test/recursion_test.rb
379
359
  - test/notice_test.rb
380
- - test/helper.rb
360
+ - test/params_cleaner_test.rb
381
361
  - test/backtrace_test.rb
382
- - test/rails_initializer_test.rb
383
- - test/capistrano_test.rb
384
- - test/support/response_shim.xml
362
+ - test/response_test.rb
363
+ - test/helper.rb
364
+ - test/integration.rb
385
365
  - test/user_informer_test.rb
386
- - test/logger_test.rb
387
- - features/rails.feature
388
- - features/step_definitions/rails_application_steps.rb
389
- - features/step_definitions/rake_steps.rb
390
- - features/step_definitions/rack_steps.rb
391
- - features/step_definitions/file_steps.rb
392
- - features/metal.feature
393
- - features/rack.feature
394
- - features/support/matchers.rb
395
- - features/support/env.rb
366
+ - features/support/airbrake_shim.rb.template
367
+ - features/support/rake/Rakefile
396
368
  - features/support/aruba.rb
369
+ - features/support/matchers.rb
397
370
  - features/support/rails.rb
398
- - features/support/rake/Rakefile
399
- - features/support/airbrake_shim.rb.template
371
+ - features/support/env.rb
400
372
  - features/user_informer.feature
373
+ - features/rails.feature
401
374
  - features/rake.feature
402
- - features/rails_with_js_notifier.feature
375
+ - features/rack.feature
376
+ - features/step_definitions/rack_steps.rb
377
+ - features/step_definitions/rake_steps.rb
378
+ - features/step_definitions/rails_application_steps.rb
379
+ - features/step_definitions/file_steps.rb
380
+ - features/metal.feature
403
381
  - features/sinatra.feature
382
+ - features/rails_with_js_notifier.feature
404
383
  - bin/airbrake
405
384
  homepage: http://www.airbrake.io
406
385
  licenses: []
386
+ metadata: {}
407
387
  post_install_message:
408
388
  rdoc_options: []
409
389
  require_paths:
410
390
  - lib
411
391
  required_ruby_version: !ruby/object:Gem::Requirement
412
- none: false
413
392
  requirements:
414
- - - ! '>='
393
+ - - '>='
415
394
  - !ruby/object:Gem::Version
416
395
  version: '0'
417
396
  required_rubygems_version: !ruby/object:Gem::Requirement
418
- none: false
419
397
  requirements:
420
- - - ! '>='
398
+ - - '>='
421
399
  - !ruby/object:Gem::Version
422
400
  version: '0'
423
401
  requirements: []
424
402
  rubyforge_project:
425
- rubygems_version: 1.8.23
403
+ rubygems_version: 2.0.14
426
404
  signing_key:
427
- specification_version: 3
405
+ specification_version: 4
428
406
  summary: Send your application errors to our hosted service and reclaim your inbox.
429
407
  test_files:
430
- - test/recursion_test.rb
431
- - test/sender_test.rb
408
+ - test/rails_initializer_test.rb
432
409
  - test/integration/javascript_notifier_test.rb
433
410
  - test/integration/catcher_test.rb
434
- - test/notifier_test.rb
435
- - test/params_cleaner_test.rb
411
+ - test/support/response_shim.xml
412
+ - test/logger_test.rb
413
+ - test/rack_test.rb
436
414
  - test/configuration_test.rb
437
- - test/integration.rb
438
- - test/airbrake_tasks_test.rb
439
415
  - test/controller_methods_test.rb
440
- - test/rack_test.rb
441
- - test/response_test.rb
416
+ - test/notifier_test.rb
417
+ - test/airbrake_tasks_test.rb
418
+ - test/sender_test.rb
419
+ - test/capistrano_test.rb
420
+ - test/recursion_test.rb
442
421
  - test/notice_test.rb
443
- - test/helper.rb
422
+ - test/params_cleaner_test.rb
444
423
  - test/backtrace_test.rb
445
- - test/rails_initializer_test.rb
446
- - test/capistrano_test.rb
447
- - test/support/response_shim.xml
424
+ - test/response_test.rb
425
+ - test/helper.rb
426
+ - test/integration.rb
448
427
  - test/user_informer_test.rb
449
- - test/logger_test.rb
450
- - features/rails.feature
451
- - features/step_definitions/rails_application_steps.rb
452
- - features/step_definitions/rake_steps.rb
453
- - features/step_definitions/rack_steps.rb
454
- - features/step_definitions/file_steps.rb
455
- - features/metal.feature
456
- - features/rack.feature
457
- - features/support/matchers.rb
458
- - features/support/env.rb
428
+ - features/support/airbrake_shim.rb.template
429
+ - features/support/rake/Rakefile
459
430
  - features/support/aruba.rb
431
+ - features/support/matchers.rb
460
432
  - features/support/rails.rb
461
- - features/support/rake/Rakefile
462
- - features/support/airbrake_shim.rb.template
433
+ - features/support/env.rb
463
434
  - features/user_informer.feature
435
+ - features/rails.feature
464
436
  - features/rake.feature
465
- - features/rails_with_js_notifier.feature
437
+ - features/rack.feature
438
+ - features/step_definitions/rack_steps.rb
439
+ - features/step_definitions/rake_steps.rb
440
+ - features/step_definitions/rails_application_steps.rb
441
+ - features/step_definitions/file_steps.rb
442
+ - features/metal.feature
466
443
  - features/sinatra.feature
444
+ - features/rails_with_js_notifier.feature