airbrake 3.2.0 → 3.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG +9 -0
- data/Rakefile +1 -1
- data/features/rails_with_js_notifier.feature +104 -0
- data/features/step_definitions/rails_application_steps.rb +26 -0
- data/lib/airbrake/configuration.rb +16 -1
- data/lib/airbrake/rails.rb +2 -0
- data/lib/airbrake/rails/javascript_notifier.rb +85 -0
- data/lib/airbrake/railtie.rb +6 -0
- data/lib/airbrake/version.rb +1 -1
- data/lib/templates/javascript_notifier_configuration +12 -0
- data/lib/templates/javascript_notifier_loader +6 -0
- data/test/configuration_test.rb +8 -0
- data/test/integration.rb +1 -0
- data/test/integration/javascript_notifier_test.rb +56 -0
- metadata +66 -102
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0cb7869b6211b8a5c7157ae331b8ef74a08a8517
|
4
|
+
data.tar.gz: d0ca30c369481d71ab97470a4f59936a5cd3ea98
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5dd5a7333f1ac94524d0fdf3a11c913a64bc240a61342d6de1109231fb9fc57df82e406f886ca894f190a357a2dabc955390ed429fc5aa5811663cff8116433b
|
7
|
+
data.tar.gz: 1a032859b51b4b957989239f52b8be83272a1fa38ba566bc55ff5e9d797c03e1ec9199d3755e901f53339db89db070b7c92e660f28cb1a9222ab256a564b0e97
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
Version 3.2.1 - 2014-05-27 15:58:24 -0700
|
2
|
+
===============================================================================
|
3
|
+
|
4
|
+
Ali Faiz (3):
|
5
|
+
Revert "Merge pull request #297 from airbrake/remove-js-notifier"
|
6
|
+
Add deprecation warning when using .
|
7
|
+
|
8
|
+
|
1
9
|
Version 3.2.0 - 2014-05-23 17:37:35 -0700
|
2
10
|
===============================================================================
|
3
11
|
|
@@ -1368,5 +1376,6 @@ Nick Quaranto (3):
|
|
1368
1376
|
|
1369
1377
|
|
1370
1378
|
|
1379
|
+
|
1371
1380
|
|
1372
1381
|
|
data/Rakefile
CHANGED
@@ -158,7 +158,7 @@ def cucumber_opts
|
|
158
158
|
|
159
159
|
case ENV["BUNDLE_GEMFILE"]
|
160
160
|
when /rails/
|
161
|
-
opts << "features/rails.feature features/metal.feature features/user_informer.feature"
|
161
|
+
opts << "features/rails.feature features/rails_with_js_notifier.feature features/metal.feature features/user_informer.feature"
|
162
162
|
when /rack/
|
163
163
|
opts << "features/rack.feature"
|
164
164
|
when /sinatra/
|
@@ -0,0 +1,104 @@
|
|
1
|
+
Feature: Install the Gem in a Rails application and enable the JavaScript notifier
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I successfully run `rails new rails_root -O --skip-gemfile`
|
5
|
+
And I cd to "rails_root"
|
6
|
+
And I configure the Airbrake shim
|
7
|
+
|
8
|
+
Scenario: Include the Javascript notifier when enabled
|
9
|
+
When I configure the notifier to use the following configuration lines:
|
10
|
+
"""
|
11
|
+
config.api_key = "myapikey"
|
12
|
+
"""
|
13
|
+
And I define a response for "TestController#index":
|
14
|
+
"""
|
15
|
+
render :inline => '<html><head profile="http://example.com"><%= airbrake_javascript_notifier %></head><body></body></html>'
|
16
|
+
"""
|
17
|
+
And I route "/test/index" to "test#index"
|
18
|
+
And I perform a request to "http://example.com:123/test/index" in the "production" environment
|
19
|
+
Then I should see the notifier JavaScript for the following:
|
20
|
+
| api_key | environment | host |
|
21
|
+
| myapikey | production | api.airbrake.io |
|
22
|
+
And the notifier JavaScript should provide the following errorDefaults:
|
23
|
+
| url | component | action |
|
24
|
+
| http://example.com:123/test/index | test | index |
|
25
|
+
|
26
|
+
Scenario: Include the Javascript notifier when enabled using custom configuration settings
|
27
|
+
When I configure the notifier to use the following configuration lines:
|
28
|
+
"""
|
29
|
+
config.development_environments = []
|
30
|
+
config.api_key = "myapikey!"
|
31
|
+
config.host = "myairbrake.com"
|
32
|
+
config.port = 3001
|
33
|
+
"""
|
34
|
+
And I define a response for "TestController#index":
|
35
|
+
"""
|
36
|
+
render :inline => '<html><head><%= airbrake_javascript_notifier %></head><body></body></html>'
|
37
|
+
"""
|
38
|
+
And I route "/test/index" to "test#index"
|
39
|
+
And I perform a request to "http://example.com:123/test/index"
|
40
|
+
Then I should see the notifier JavaScript for the following:
|
41
|
+
| api_key | environment | host |
|
42
|
+
| myapikey! | test | myairbrake.com:3001 |
|
43
|
+
|
44
|
+
Scenario: Don't include the Javascript notifier by default
|
45
|
+
When I configure the notifier to use the following configuration lines:
|
46
|
+
"""
|
47
|
+
config.api_key = "myapikey!"
|
48
|
+
"""
|
49
|
+
And I define a response for "TestController#index":
|
50
|
+
"""
|
51
|
+
render :inline => "<html><head></head><body></body></html>"
|
52
|
+
"""
|
53
|
+
And I route "/test/index" to "test#index"
|
54
|
+
And I perform a request to "http://example.com:123/test/index"
|
55
|
+
Then I should not see notifier JavaScript
|
56
|
+
|
57
|
+
Scenario: Don't include the Javascript notifier when enabled in non-public environments
|
58
|
+
When I configure the notifier to use the following configuration lines:
|
59
|
+
"""
|
60
|
+
config.api_key = "myapikey!"
|
61
|
+
config.environment_name = 'test'
|
62
|
+
"""
|
63
|
+
And I define a response for "TestController#index":
|
64
|
+
"""
|
65
|
+
render :inline => '<html><head><%= airbrake_javascript_notifier %></head><body></body></html>'
|
66
|
+
"""
|
67
|
+
And I route "/test/index" to "test#index"
|
68
|
+
And I perform a request to "http://example.com:123/test/index" in the "test" environment
|
69
|
+
Then I should not see notifier JavaScript
|
70
|
+
|
71
|
+
Scenario: Use the js_api_key if present
|
72
|
+
When I configure the notifier to use the following configuration lines:
|
73
|
+
"""
|
74
|
+
config.api_key = "myapikey!"
|
75
|
+
config.js_api_key = "myjsapikey!"
|
76
|
+
"""
|
77
|
+
And I define a response for "TestController#index":
|
78
|
+
"""
|
79
|
+
render :inline => '<html><head><%= airbrake_javascript_notifier %></head><body></body></html>'
|
80
|
+
"""
|
81
|
+
And I route "/test/index" to "test#index"
|
82
|
+
And I perform a request to "http://example.com:123/test/index" in the "production" environment
|
83
|
+
Then I should see the notifier JavaScript for the following:
|
84
|
+
| api_key | environment | host |
|
85
|
+
| myjsapikey! | production | api.airbrake.io |
|
86
|
+
|
87
|
+
Scenario: Being careful with user's instance variables
|
88
|
+
When I configure the notifier to use the following configuration lines:
|
89
|
+
"""
|
90
|
+
config.api_key = "myapikey"
|
91
|
+
"""
|
92
|
+
And I define a response for "TestController#index":
|
93
|
+
"""
|
94
|
+
@template = "this is some random instance variable"
|
95
|
+
render :inline => '<html><head><%= airbrake_javascript_notifier %></head><body></body></html>'
|
96
|
+
"""
|
97
|
+
And I route "/test/index" to "test#index"
|
98
|
+
And I perform a request to "http://example.com:123/test/index" in the "production" environment
|
99
|
+
Then I should see the notifier JavaScript for the following:
|
100
|
+
| api_key | environment | host |
|
101
|
+
| myapikey | production | api.airbrake.io |
|
102
|
+
And the notifier JavaScript should provide the following errorDefaults:
|
103
|
+
| url | component | action |
|
104
|
+
| http://example.com:123/test/index | test | index |
|
@@ -192,6 +192,32 @@ When /^I configure the application to filter parameter "([^\"]*)"$/ do |paramete
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
|
+
Then /^I should see the notifier JavaScript for the following:$/ do |table|
|
196
|
+
hash = table.hashes.first
|
197
|
+
host = hash['host'] || 'api.airbrake.io'
|
198
|
+
secure = hash['secure'] || false
|
199
|
+
api_key = hash['api_key']
|
200
|
+
environment = hash['environment'] || 'production'
|
201
|
+
|
202
|
+
steps %{
|
203
|
+
Then the output should contain "#{host}/javascripts/notifier.js"
|
204
|
+
And the output should contain "Airbrake.setKey('#{api_key}');"
|
205
|
+
And the output should contain "Airbrake.setHost('#{host}');"
|
206
|
+
And the output should contain "Airbrake.setEnvironment('#{environment}');"
|
207
|
+
}
|
208
|
+
end
|
209
|
+
|
210
|
+
Then /^the notifier JavaScript should provide the following errorDefaults:$/ do |table|
|
211
|
+
hash = table.hashes.first
|
212
|
+
hash.each do |key, value|
|
213
|
+
assert_matching_output("Airbrake\.setErrorDefaults.*#{key}: \"#{value}\"",all_output)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
Then /^I should not see notifier JavaScript$/ do
|
218
|
+
step %{the output should not contain "script[type='text/javascript'][src$='/javascripts/notifier.js']"}
|
219
|
+
end
|
220
|
+
|
195
221
|
When /^I have set up authentication system in my app that uses "([^\"]*)"$/ do |current_user|
|
196
222
|
application_controller = File.join(rails_root, 'app', 'controllers', "application_controller.rb")
|
197
223
|
definition =
|
@@ -2,7 +2,7 @@ module Airbrake
|
|
2
2
|
# Used to set up and modify settings for the notifier.
|
3
3
|
class Configuration
|
4
4
|
|
5
|
-
OPTIONS = [:api_key, :backtrace_filters, :development_environments,
|
5
|
+
OPTIONS = [:api_key, :js_api_key, :backtrace_filters, :development_environments,
|
6
6
|
:development_lookup, :environment_name, :host,
|
7
7
|
:http_open_timeout, :http_read_timeout, :ignore, :ignore_by_filters,
|
8
8
|
:ignore_user_agent, :notifier_name, :notifier_url, :notifier_version,
|
@@ -14,6 +14,12 @@ module Airbrake
|
|
14
14
|
# The API key for your project, found on the project edit form.
|
15
15
|
attr_accessor :api_key
|
16
16
|
|
17
|
+
# If you're using the Javascript notifier and would want to separate
|
18
|
+
# Javascript notifications into another Airbrake project, specify
|
19
|
+
# its APi key here.
|
20
|
+
# Defaults to #api_key (of the base project)
|
21
|
+
attr_writer :js_api_key
|
22
|
+
|
17
23
|
# The host to connect to (defaults to airbrake.io).
|
18
24
|
attr_accessor :host
|
19
25
|
|
@@ -152,6 +158,7 @@ module Airbrake
|
|
152
158
|
alias_method :use_system_ssl_cert_chain?, :use_system_ssl_cert_chain
|
153
159
|
|
154
160
|
def initialize
|
161
|
+
@js_api_key = nil
|
155
162
|
@secure = false
|
156
163
|
@use_system_ssl_cert_chain= false
|
157
164
|
@host = 'api.airbrake.io'
|
@@ -304,6 +311,14 @@ module Airbrake
|
|
304
311
|
@rescue_rake_exceptions = val
|
305
312
|
end
|
306
313
|
|
314
|
+
def js_api_key
|
315
|
+
@js_api_key || self.api_key
|
316
|
+
end
|
317
|
+
|
318
|
+
def js_notifier=(*args)
|
319
|
+
warn '[AIRBRAKE] config.js_notifier has been deprecated and has no effect. You should use <%= airbrake_javascript_notifier %> directly at the top of your layouts. Be sure to place it before all other javascript.'
|
320
|
+
end
|
321
|
+
|
307
322
|
def ca_bundle_path
|
308
323
|
if use_system_ssl_cert_chain? && File.exist?(OpenSSL::X509::DEFAULT_CERT_FILE)
|
309
324
|
OpenSSL::X509::DEFAULT_CERT_FILE
|
data/lib/airbrake/rails.rb
CHANGED
@@ -2,6 +2,7 @@ require 'airbrake'
|
|
2
2
|
require 'airbrake/rails/controller_methods'
|
3
3
|
require 'airbrake/rails/action_controller_catcher'
|
4
4
|
require 'airbrake/rails/error_lookup'
|
5
|
+
require 'airbrake/rails/javascript_notifier'
|
5
6
|
|
6
7
|
module Airbrake
|
7
8
|
module Rails
|
@@ -10,6 +11,7 @@ module Airbrake
|
|
10
11
|
ActionController::Base.send(:include, Airbrake::Rails::ActionControllerCatcher)
|
11
12
|
ActionController::Base.send(:include, Airbrake::Rails::ErrorLookup)
|
12
13
|
ActionController::Base.send(:include, Airbrake::Rails::ControllerMethods)
|
14
|
+
ActionController::Base.send(:include, Airbrake::Rails::JavascriptNotifier)
|
13
15
|
end
|
14
16
|
|
15
17
|
rails_logger = if defined?(::Rails.logger)
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module Airbrake
|
2
|
+
module Rails
|
3
|
+
module JavascriptNotifier
|
4
|
+
def self.included(base) #:nodoc:
|
5
|
+
base.send :helper_method, :airbrake_javascript_notifier
|
6
|
+
base.send :helper_method, :airbrake_javascript_loader
|
7
|
+
base.send :helper_method, :airbrake_javascript_configuration
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def airbrake_javascript_notifier
|
13
|
+
warn '[DEPRECATION] `airbrake_javascript_notifier` is deprecated and will no longer be supported in v4.0.0. /
|
14
|
+
Please use the official Airbrake JavaScript Notifier - https://github.com/airbrake/airbrake-js'
|
15
|
+
if Airbrake.configuration.public?
|
16
|
+
airbrake_javascript_loader + airbrake_javascript_configuration
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def airbrake_javascript_loader
|
21
|
+
if Airbrake.configuration.public?
|
22
|
+
path = File.join File.dirname(__FILE__), '..', '..', 'templates', 'javascript_notifier_loader'
|
23
|
+
|
24
|
+
_airbrake_render_part path
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def airbrake_javascript_configuration
|
29
|
+
if Airbrake.configuration.public?
|
30
|
+
path = File.join File.dirname(__FILE__), '..', '..', 'templates', 'javascript_notifier_configuration'
|
31
|
+
|
32
|
+
options = {
|
33
|
+
:api_key => Airbrake.configuration.js_api_key,
|
34
|
+
:environment => Airbrake.configuration.environment_name,
|
35
|
+
:action_name => action_name,
|
36
|
+
:controller_name => controller_name,
|
37
|
+
:url => request.url
|
38
|
+
}
|
39
|
+
|
40
|
+
_airbrake_render_part path, options
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
protected
|
45
|
+
attr_reader :template
|
46
|
+
|
47
|
+
def _airbrake_render_part(path, locals={})
|
48
|
+
locals[:host] = _airbrake_host
|
49
|
+
|
50
|
+
options = {
|
51
|
+
:file => path,
|
52
|
+
:layout => false,
|
53
|
+
:use_full_path => false,
|
54
|
+
:handlers => [:erb],
|
55
|
+
:locals => locals
|
56
|
+
}
|
57
|
+
|
58
|
+
result = _airbrake_render_template options
|
59
|
+
|
60
|
+
if result.respond_to?(:html_safe)
|
61
|
+
result.html_safe
|
62
|
+
else
|
63
|
+
result
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def _airbrake_render_template(options)
|
68
|
+
case template
|
69
|
+
when ActionView::Template
|
70
|
+
template.render options
|
71
|
+
else
|
72
|
+
render_to_string options
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def _airbrake_host
|
77
|
+
host = Airbrake.configuration.host.dup
|
78
|
+
port = Airbrake.configuration.port
|
79
|
+
host << ":#{port}" unless [80, 443].include?(port)
|
80
|
+
|
81
|
+
host
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
data/lib/airbrake/railtie.rb
CHANGED
@@ -41,6 +41,12 @@ module Airbrake
|
|
41
41
|
|
42
42
|
include Airbrake::Rails::ControllerMethods
|
43
43
|
end
|
44
|
+
|
45
|
+
if defined?(::ActionController::Base)
|
46
|
+
require 'airbrake/rails/javascript_notifier'
|
47
|
+
|
48
|
+
::ActionController::Base.send(:include, Airbrake::Rails::JavascriptNotifier)
|
49
|
+
end
|
44
50
|
end
|
45
51
|
end
|
46
52
|
end
|
data/lib/airbrake/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= javascript_tag %Q{
|
2
|
+
try {
|
3
|
+
window.Airbrake = (typeof(Airbrake) == 'undefined' && typeof(Hoptoad) != 'undefined') ? Hoptoad : Airbrake
|
4
|
+
Airbrake.setKey('#{api_key}');
|
5
|
+
Airbrake.setHost('#{host}');
|
6
|
+
Airbrake.setEnvironment('#{environment}');
|
7
|
+
Airbrake.setErrorDefaults({ url: "#{escape_javascript url}", component: "#{controller_name}", action: "#{action_name}" });
|
8
|
+
} catch (e) {
|
9
|
+
window.onerror = null;
|
10
|
+
}
|
11
|
+
}
|
12
|
+
%>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<%= javascript_tag %Q{
|
2
|
+
(function(){
|
3
|
+
var notifierJsScheme = (("https:" == document.location.protocol) ? "https://" : "http://");
|
4
|
+
document.write(unescape("%3Cscript src='" + notifierJsScheme + "#{host}/javascripts/notifier.js' type='text/javascript'%3E%3C/script%3E"));
|
5
|
+
})();
|
6
|
+
}%>
|
data/test/configuration_test.rb
CHANGED
@@ -127,6 +127,14 @@ class ConfigurationTest < Test::Unit::TestCase
|
|
127
127
|
assert_appends_value :rake_environment_filters
|
128
128
|
end
|
129
129
|
|
130
|
+
should "warn when attempting to write js_notifier" do
|
131
|
+
config = Airbrake::Configuration.new
|
132
|
+
config.
|
133
|
+
expects(:warn).
|
134
|
+
with(regexp_matches(/deprecated/i))
|
135
|
+
config.js_notifier = true
|
136
|
+
end
|
137
|
+
|
130
138
|
should "allow ignored user agents to be appended" do
|
131
139
|
assert_appends_value :ignore_user_agent
|
132
140
|
end
|
data/test/integration.rb
CHANGED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'airbrake/rails/javascript_notifier'
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
class JavascriptNotifierTest < Test::Unit::TestCase
|
5
|
+
module FakeRenderer
|
6
|
+
def javascript_tag(text)
|
7
|
+
"<script>#{text}</script>"
|
8
|
+
end
|
9
|
+
def escape_javascript(text)
|
10
|
+
"ESC#{text}ESC"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class FakeController
|
15
|
+
def self.helper_method(*args)
|
16
|
+
end
|
17
|
+
|
18
|
+
include Airbrake::Rails::JavascriptNotifier
|
19
|
+
|
20
|
+
def action_name
|
21
|
+
"action"
|
22
|
+
end
|
23
|
+
|
24
|
+
def controller_name
|
25
|
+
"controller"
|
26
|
+
end
|
27
|
+
|
28
|
+
def request
|
29
|
+
@request ||= OpenStruct.new
|
30
|
+
end
|
31
|
+
|
32
|
+
def render_to_string(options)
|
33
|
+
context = OpenStruct.new(options[:locals])
|
34
|
+
context.extend(FakeRenderer)
|
35
|
+
context.instance_eval do
|
36
|
+
erb = ERB.new(IO.read(options[:file]))
|
37
|
+
erb.result(binding)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
should "make sure escape_javacript is called on the request.url" do
|
43
|
+
Airbrake.configure do
|
44
|
+
end
|
45
|
+
controller = FakeController.new
|
46
|
+
controller.request.url = "bad_javascript"
|
47
|
+
assert controller.send(:airbrake_javascript_notifier)['"ESCbad_javascriptESC"']
|
48
|
+
assert ! controller.send(:airbrake_javascript_notifier)['"bad_javascript"']
|
49
|
+
end
|
50
|
+
|
51
|
+
should "not raise exceptions for the non-public requests" do
|
52
|
+
Airbrake::Configuration.any_instance.stubs(:public? => false)
|
53
|
+
controller = FakeController.new
|
54
|
+
assert_nothing_raised { controller.send(:airbrake_javascript_notifier) }
|
55
|
+
end
|
56
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: airbrake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
5
|
-
prerelease:
|
4
|
+
version: 3.2.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Airbrake
|
@@ -14,39 +13,34 @@ 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
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,7 +139,6 @@ 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
|
@@ -166,7 +146,6 @@ dependencies:
|
|
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
|
@@ -174,71 +153,62 @@ dependencies:
|
|
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
|
+
- - '>='
|
236
207
|
- !ruby/object:Gem::Version
|
237
208
|
version: '0'
|
238
209
|
- !ruby/object:Gem::Dependency
|
239
210
|
name: sucker_punch
|
240
211
|
requirement: !ruby/object:Gem::Requirement
|
241
|
-
none: false
|
242
212
|
requirements:
|
243
213
|
- - '='
|
244
214
|
- !ruby/object:Gem::Version
|
@@ -246,7 +216,6 @@ dependencies:
|
|
246
216
|
type: :development
|
247
217
|
prerelease: false
|
248
218
|
version_requirements: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
219
|
requirements:
|
251
220
|
- - '='
|
252
221
|
- !ruby/object:Gem::Version
|
@@ -254,71 +223,62 @@ dependencies:
|
|
254
223
|
- !ruby/object:Gem::Dependency
|
255
224
|
name: shoulda-matchers
|
256
225
|
requirement: !ruby/object:Gem::Requirement
|
257
|
-
none: false
|
258
226
|
requirements:
|
259
|
-
- -
|
227
|
+
- - '>='
|
260
228
|
- !ruby/object:Gem::Version
|
261
229
|
version: '0'
|
262
230
|
type: :development
|
263
231
|
prerelease: false
|
264
232
|
version_requirements: !ruby/object:Gem::Requirement
|
265
|
-
none: false
|
266
233
|
requirements:
|
267
|
-
- -
|
234
|
+
- - '>='
|
268
235
|
- !ruby/object:Gem::Version
|
269
236
|
version: '0'
|
270
237
|
- !ruby/object:Gem::Dependency
|
271
238
|
name: shoulda-context
|
272
239
|
requirement: !ruby/object:Gem::Requirement
|
273
|
-
none: false
|
274
240
|
requirements:
|
275
|
-
- -
|
241
|
+
- - '>='
|
276
242
|
- !ruby/object:Gem::Version
|
277
243
|
version: '0'
|
278
244
|
type: :development
|
279
245
|
prerelease: false
|
280
246
|
version_requirements: !ruby/object:Gem::Requirement
|
281
|
-
none: false
|
282
247
|
requirements:
|
283
|
-
- -
|
248
|
+
- - '>='
|
284
249
|
- !ruby/object:Gem::Version
|
285
250
|
version: '0'
|
286
251
|
- !ruby/object:Gem::Dependency
|
287
252
|
name: pry
|
288
253
|
requirement: !ruby/object:Gem::Requirement
|
289
|
-
none: false
|
290
254
|
requirements:
|
291
|
-
- -
|
255
|
+
- - '>='
|
292
256
|
- !ruby/object:Gem::Version
|
293
257
|
version: '0'
|
294
258
|
type: :development
|
295
259
|
prerelease: false
|
296
260
|
version_requirements: !ruby/object:Gem::Requirement
|
297
|
-
none: false
|
298
261
|
requirements:
|
299
|
-
- -
|
262
|
+
- - '>='
|
300
263
|
- !ruby/object:Gem::Version
|
301
264
|
version: '0'
|
302
265
|
- !ruby/object:Gem::Dependency
|
303
266
|
name: coveralls
|
304
267
|
requirement: !ruby/object:Gem::Requirement
|
305
|
-
none: false
|
306
268
|
requirements:
|
307
|
-
- -
|
269
|
+
- - '>='
|
308
270
|
- !ruby/object:Gem::Version
|
309
271
|
version: '0'
|
310
272
|
type: :development
|
311
273
|
prerelease: false
|
312
274
|
version_requirements: !ruby/object:Gem::Requirement
|
313
|
-
none: false
|
314
275
|
requirements:
|
315
|
-
- -
|
276
|
+
- - '>='
|
316
277
|
- !ruby/object:Gem::Version
|
317
278
|
version: '0'
|
318
279
|
- !ruby/object:Gem::Dependency
|
319
280
|
name: minitest
|
320
281
|
requirement: !ruby/object:Gem::Requirement
|
321
|
-
none: false
|
322
282
|
requirements:
|
323
283
|
- - ~>
|
324
284
|
- !ruby/object:Gem::Version
|
@@ -326,7 +286,6 @@ dependencies:
|
|
326
286
|
type: :development
|
327
287
|
prerelease: false
|
328
288
|
version_requirements: !ruby/object:Gem::Requirement
|
329
|
-
none: false
|
330
289
|
requirements:
|
331
290
|
- - ~>
|
332
291
|
- !ruby/object:Gem::Version
|
@@ -338,12 +297,42 @@ executables:
|
|
338
297
|
extensions: []
|
339
298
|
extra_rdoc_files: []
|
340
299
|
files:
|
300
|
+
- CHANGELOG
|
301
|
+
- Gemfile
|
302
|
+
- Guardfile
|
303
|
+
- INSTALL
|
304
|
+
- LICENSE
|
305
|
+
- README.md
|
306
|
+
- README_FOR_HEROKU_ADDON.md
|
307
|
+
- Rakefile
|
308
|
+
- TESTED_AGAINST
|
309
|
+
- airbrake.gemspec
|
310
|
+
- bin/airbrake
|
311
|
+
- features/metal.feature
|
312
|
+
- features/rack.feature
|
313
|
+
- features/rails.feature
|
314
|
+
- features/rails_with_js_notifier.feature
|
315
|
+
- features/rake.feature
|
316
|
+
- features/sinatra.feature
|
317
|
+
- features/step_definitions/file_steps.rb
|
318
|
+
- features/step_definitions/rack_steps.rb
|
319
|
+
- features/step_definitions/rails_application_steps.rb
|
320
|
+
- features/step_definitions/rake_steps.rb
|
321
|
+
- features/support/airbrake_shim.rb.template
|
322
|
+
- features/support/aruba.rb
|
323
|
+
- features/support/env.rb
|
324
|
+
- features/support/matchers.rb
|
325
|
+
- features/support/rails.rb
|
326
|
+
- features/support/rake/Rakefile
|
327
|
+
- features/user_informer.feature
|
341
328
|
- generators/airbrake/airbrake_generator.rb
|
342
329
|
- generators/airbrake/lib/insert_commands.rb
|
343
330
|
- generators/airbrake/lib/rake_commands.rb
|
344
331
|
- generators/airbrake/templates/airbrake_tasks.rake
|
345
332
|
- generators/airbrake/templates/capistrano_hook.rb
|
346
333
|
- generators/airbrake/templates/initializer.rb
|
334
|
+
- install.rb
|
335
|
+
- lib/airbrake.rb
|
347
336
|
- lib/airbrake/backtrace.rb
|
348
337
|
- lib/airbrake/capistrano.rb
|
349
338
|
- lib/airbrake/capistrano3.rb
|
@@ -358,11 +347,12 @@ files:
|
|
358
347
|
- lib/airbrake/jobs/send_job.rb
|
359
348
|
- lib/airbrake/notice.rb
|
360
349
|
- lib/airbrake/rack.rb
|
350
|
+
- lib/airbrake/rails.rb
|
361
351
|
- lib/airbrake/rails/action_controller_catcher.rb
|
362
352
|
- lib/airbrake/rails/controller_methods.rb
|
363
353
|
- lib/airbrake/rails/error_lookup.rb
|
354
|
+
- lib/airbrake/rails/javascript_notifier.rb
|
364
355
|
- lib/airbrake/rails/middleware.rb
|
365
|
-
- lib/airbrake/rails.rb
|
366
356
|
- lib/airbrake/rails3_tasks.rb
|
367
357
|
- lib/airbrake/railtie.rb
|
368
358
|
- lib/airbrake/rake_handler.rb
|
@@ -370,41 +360,32 @@ files:
|
|
370
360
|
- lib/airbrake/sender.rb
|
371
361
|
- lib/airbrake/shared_tasks.rb
|
372
362
|
- lib/airbrake/sinatra.rb
|
373
|
-
- lib/airbrake/tasks/airbrake.cap
|
374
363
|
- lib/airbrake/tasks.rb
|
364
|
+
- lib/airbrake/tasks/airbrake.cap
|
375
365
|
- lib/airbrake/user_informer.rb
|
376
366
|
- lib/airbrake/utils/params_cleaner.rb
|
377
367
|
- lib/airbrake/utils/rack_filters.rb
|
378
368
|
- lib/airbrake/version.rb
|
379
|
-
- lib/airbrake.rb
|
380
369
|
- lib/airbrake_tasks.rb
|
381
370
|
- lib/rails/generators/airbrake/airbrake_generator.rb
|
371
|
+
- lib/templates/javascript_notifier_configuration
|
372
|
+
- lib/templates/javascript_notifier_loader
|
382
373
|
- lib/templates/rescue.erb
|
383
374
|
- rails/init.rb
|
375
|
+
- resources/README.md
|
384
376
|
- resources/airbrake_3_0.json
|
385
377
|
- resources/ca-bundle.crt
|
386
378
|
- resources/notice.xml
|
387
|
-
- resources/README.md
|
388
379
|
- script/integration_test.rb
|
389
|
-
- airbrake.gemspec
|
390
|
-
- CHANGELOG
|
391
|
-
- Gemfile
|
392
|
-
- Guardfile
|
393
|
-
- INSTALL
|
394
|
-
- LICENSE
|
395
|
-
- Rakefile
|
396
|
-
- README_FOR_HEROKU_ADDON.md
|
397
|
-
- README.md
|
398
|
-
- TESTED_AGAINST
|
399
|
-
- install.rb
|
400
380
|
- test/airbrake_tasks_test.rb
|
401
381
|
- test/backtrace_test.rb
|
402
382
|
- test/capistrano_test.rb
|
403
383
|
- test/configuration_test.rb
|
404
384
|
- test/controller_methods_test.rb
|
405
385
|
- test/helper.rb
|
406
|
-
- test/integration/catcher_test.rb
|
407
386
|
- test/integration.rb
|
387
|
+
- test/integration/catcher_test.rb
|
388
|
+
- test/integration/javascript_notifier_test.rb
|
408
389
|
- test/logger_test.rb
|
409
390
|
- test/notice_test.rb
|
410
391
|
- test/notifier_test.rb
|
@@ -416,46 +397,28 @@ files:
|
|
416
397
|
- test/sender_test.rb
|
417
398
|
- test/support/response_shim.xml
|
418
399
|
- test/user_informer_test.rb
|
419
|
-
- features/metal.feature
|
420
|
-
- features/rack.feature
|
421
|
-
- features/rails.feature
|
422
|
-
- features/rake.feature
|
423
|
-
- features/sinatra.feature
|
424
|
-
- features/step_definitions/file_steps.rb
|
425
|
-
- features/step_definitions/rack_steps.rb
|
426
|
-
- features/step_definitions/rails_application_steps.rb
|
427
|
-
- features/step_definitions/rake_steps.rb
|
428
|
-
- features/support/airbrake_shim.rb.template
|
429
|
-
- features/support/aruba.rb
|
430
|
-
- features/support/env.rb
|
431
|
-
- features/support/matchers.rb
|
432
|
-
- features/support/rails.rb
|
433
|
-
- features/support/rake/Rakefile
|
434
|
-
- features/user_informer.feature
|
435
|
-
- bin/airbrake
|
436
400
|
homepage: http://www.airbrake.io
|
437
401
|
licenses: []
|
402
|
+
metadata: {}
|
438
403
|
post_install_message:
|
439
404
|
rdoc_options: []
|
440
405
|
require_paths:
|
441
406
|
- lib
|
442
407
|
required_ruby_version: !ruby/object:Gem::Requirement
|
443
|
-
none: false
|
444
408
|
requirements:
|
445
|
-
- -
|
409
|
+
- - '>='
|
446
410
|
- !ruby/object:Gem::Version
|
447
411
|
version: '0'
|
448
412
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
449
|
-
none: false
|
450
413
|
requirements:
|
451
|
-
- -
|
414
|
+
- - '>='
|
452
415
|
- !ruby/object:Gem::Version
|
453
416
|
version: '0'
|
454
417
|
requirements: []
|
455
418
|
rubyforge_project:
|
456
|
-
rubygems_version:
|
419
|
+
rubygems_version: 2.2.0
|
457
420
|
signing_key:
|
458
|
-
specification_version:
|
421
|
+
specification_version: 4
|
459
422
|
summary: Send your application errors to our hosted service and reclaim your inbox.
|
460
423
|
test_files:
|
461
424
|
- test/airbrake_tasks_test.rb
|
@@ -465,6 +428,7 @@ test_files:
|
|
465
428
|
- test/controller_methods_test.rb
|
466
429
|
- test/helper.rb
|
467
430
|
- test/integration/catcher_test.rb
|
431
|
+
- test/integration/javascript_notifier_test.rb
|
468
432
|
- test/integration.rb
|
469
433
|
- test/logger_test.rb
|
470
434
|
- test/notice_test.rb
|
@@ -480,6 +444,7 @@ test_files:
|
|
480
444
|
- features/metal.feature
|
481
445
|
- features/rack.feature
|
482
446
|
- features/rails.feature
|
447
|
+
- features/rails_with_js_notifier.feature
|
483
448
|
- features/rake.feature
|
484
449
|
- features/sinatra.feature
|
485
450
|
- features/step_definitions/file_steps.rb
|
@@ -493,4 +458,3 @@ test_files:
|
|
493
458
|
- features/support/rails.rb
|
494
459
|
- features/support/rake/Rakefile
|
495
460
|
- features/user_informer.feature
|
496
|
-
has_rdoc:
|