airbrake 3.1.14 → 3.1.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG +39 -0
- data/README.md +3 -2
- data/Rakefile +9 -11
- data/airbrake.gemspec +3 -2
- data/features/rails.feature +14 -0
- data/features/step_definitions/rails_application_steps.rb +7 -1
- data/features/support/env.rb +18 -6
- data/lib/airbrake.rb +7 -0
- data/lib/airbrake/cli/client.rb +1 -1
- data/lib/airbrake/configuration.rb +11 -7
- data/lib/airbrake/jobs/send_job.rb +7 -0
- data/lib/airbrake/notice.rb +3 -2
- data/lib/airbrake/rack.rb +1 -1
- data/lib/airbrake/utils/params_cleaner.rb +4 -3
- data/lib/airbrake/utils/rack_filters.rb +39 -0
- data/lib/airbrake/version.rb +1 -1
- data/resources/notice.xml +1 -2
- data/test/configuration_test.rb +2 -1
- data/test/helper.rb +1 -0
- data/test/params_cleaner_test.rb +5 -4
- data/test/rack_test.rb +19 -15
- metadata +129 -151
checksums.yaml
ADDED
@@ -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 => [
|
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
|
-
|
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'
|
data/airbrake.gemspec
CHANGED
@@ -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("
|
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")
|
data/features/rails.feature
CHANGED
@@ -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
|
data/features/support/env.rb
CHANGED
@@ -1,16 +1,20 @@
|
|
1
1
|
require 'active_support'
|
2
2
|
require 'nokogiri'
|
3
3
|
require 'rspec'
|
4
|
-
require
|
4
|
+
require 'aruba/cucumber'
|
5
|
+
require 'pry'
|
5
6
|
|
6
|
-
PROJECT_ROOT
|
7
|
-
TEMP_DIR
|
8
|
-
LOCAL_RAILS_ROOT
|
9
|
-
RACK_FILE
|
10
|
-
LAST_NOTICE
|
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
|
data/lib/airbrake.rb
CHANGED
@@ -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'
|
data/lib/airbrake/cli/client.rb
CHANGED
@@ -30,7 +30,7 @@ module Client
|
|
30
30
|
|
31
31
|
def create_deploy
|
32
32
|
uri = URI.parse "http://airbrake.io"\
|
33
|
-
"/
|
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
|
-
|
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
|
-
|
340
|
-
|
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)
|
data/lib/airbrake/notice.rb
CHANGED
@@ -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
|
243
|
+
end)
|
243
244
|
end
|
244
245
|
|
245
246
|
# Determines if this notice should be ignored
|
data/lib/airbrake/rack.rb
CHANGED
@@ -55,8 +55,9 @@ module Airbrake
|
|
55
55
|
|
56
56
|
def clean_rack_request_data
|
57
57
|
if @cgi_data
|
58
|
-
|
59
|
-
|
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
|
data/lib/airbrake/version.rb
CHANGED
data/resources/notice.xml
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?><notice version="2.4"><api-key
|
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="<top (required)>"/><line number="23" file="[GEM_ROOT]/bin/rake" method="load"/><line number="23" file="[GEM_ROOT]/bin/rake" method="<main>"/></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">#<StringIO:0x0000000357f410></var><var key="rack.errors">#<StringIO:0x0000000357f4b0></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">#<ApplicationController:0x000000035906e8></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="<top (required)>"/><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="<top (required)>"/><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="<top (required)>"/><line number="4" file="bin/rails" method="require"/><line number="4" file="bin/rails" method="<main>"/></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>
|
data/test/configuration_test.rb
CHANGED
@@ -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
|
data/test/helper.rb
CHANGED
data/test/params_cleaner_test.rb
CHANGED
@@ -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
|
-
|
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
|
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
|
27
|
+
assert_equal object_serialized, hash[:array].first, "array members should be serialized"
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
data/test/rack_test.rb
CHANGED
@@ -35,24 +35,28 @@ class RackTest < Test::Unit::TestCase
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
exception
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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
|
-
|
52
|
+
actual_response = stack.call(environment)
|
51
53
|
|
52
|
-
|
53
|
-
|
54
|
-
|
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.
|
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:
|
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:
|
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/
|
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/
|
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/
|
341
|
-
- lib/airbrake/
|
342
|
-
- lib/airbrake/
|
343
|
-
- lib/airbrake/
|
344
|
-
- lib/airbrake/
|
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/
|
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/
|
372
|
-
- test/
|
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/
|
378
|
-
- test/
|
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/
|
360
|
+
- test/params_cleaner_test.rb
|
381
361
|
- test/backtrace_test.rb
|
382
|
-
- test/
|
383
|
-
- test/
|
384
|
-
- test/
|
362
|
+
- test/response_test.rb
|
363
|
+
- test/helper.rb
|
364
|
+
- test/integration.rb
|
385
365
|
- test/user_informer_test.rb
|
386
|
-
-
|
387
|
-
- features/
|
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/
|
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/
|
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:
|
403
|
+
rubygems_version: 2.0.14
|
426
404
|
signing_key:
|
427
|
-
specification_version:
|
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/
|
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/
|
435
|
-
- test/
|
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/
|
441
|
-
- test/
|
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/
|
422
|
+
- test/params_cleaner_test.rb
|
444
423
|
- test/backtrace_test.rb
|
445
|
-
- test/
|
446
|
-
- test/
|
447
|
-
- test/
|
424
|
+
- test/response_test.rb
|
425
|
+
- test/helper.rb
|
426
|
+
- test/integration.rb
|
448
427
|
- test/user_informer_test.rb
|
449
|
-
-
|
450
|
-
- features/
|
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/
|
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/
|
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
|