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.
- 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
|
+
[](https://circleci.com/gh/airbrake/airbrake)
|
4
5
|
[](https://codeclimate.com/github/airbrake/airbrake)
|
5
6
|
[](https://coveralls.io/r/airbrake/airbrake?branch=master)
|
6
7
|
[](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
|