airbrake 3.1.14 → 3.1.15

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.
@@ -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