airbrake 3.1.8 → 3.1.9
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.
- data/CHANGELOG +36 -0
- data/README.md +2 -2
- data/TESTED_AGAINST +3 -3
- data/features/rails.feature +26 -1
- data/features/rails_with_js_notifier.feature +19 -0
- data/features/step_definitions/rails_application_steps.rb +8 -4
- data/generators/airbrake/templates/initializer.rb +1 -3
- data/lib/airbrake/backtrace.rb +8 -8
- data/lib/airbrake/capistrano.rb +1 -1
- data/lib/airbrake/configuration.rb +1 -1
- data/lib/airbrake/notice.rb +9 -8
- data/lib/airbrake/rack.rb +6 -7
- data/lib/airbrake/rails/javascript_notifier.rb +11 -7
- data/lib/airbrake/rails/middleware.rb +18 -24
- data/lib/airbrake/rails3_tasks.rb +1 -1
- data/lib/airbrake/sender.rb +2 -1
- data/lib/airbrake/sinatra.rb +3 -4
- data/lib/airbrake/version.rb +1 -1
- data/lib/rails/generators/airbrake/airbrake_generator.rb +26 -3
- data/resources/airbrake_2_4.xsd +1 -1
- data/test/backtrace_test.rb +4 -4
- data/test/capistrano_test.rb +1 -1
- data/test/notice_test.rb +1 -1
- metadata +69 -69
data/CHANGELOG
CHANGED
|
@@ -1,3 +1,38 @@
|
|
|
1
|
+
Version 3.1.9 - 2013-03-25 20:06:10 +0100
|
|
2
|
+
===============================================================================
|
|
3
|
+
|
|
4
|
+
Bartosz Knapik (2):
|
|
5
|
+
.rbenv-version should be in gitignore
|
|
6
|
+
replace current_release with release_path
|
|
7
|
+
|
|
8
|
+
Chas Lemley (1):
|
|
9
|
+
correctly use config.user_attributes=
|
|
10
|
+
|
|
11
|
+
Hrvoje Šimić (6):
|
|
12
|
+
Update year in README
|
|
13
|
+
thread safety fix
|
|
14
|
+
add the secure option to the generator
|
|
15
|
+
fix the broken generator method call
|
|
16
|
+
be more careful with @template in javascript notifier
|
|
17
|
+
update tested rails versions
|
|
18
|
+
|
|
19
|
+
Marko Šiftar (2):
|
|
20
|
+
just collect id by default
|
|
21
|
+
update test suite (user details)
|
|
22
|
+
|
|
23
|
+
Robert Glaser (1):
|
|
24
|
+
log failed certicate verifications
|
|
25
|
+
|
|
26
|
+
Thilo-Alexander Ginkel (1):
|
|
27
|
+
Partial thread-safety fix
|
|
28
|
+
|
|
29
|
+
Thom Mahoney (1):
|
|
30
|
+
Airbake::Backtrace::Line#method => #method_name
|
|
31
|
+
|
|
32
|
+
jokerswanted (1):
|
|
33
|
+
Update README.md
|
|
34
|
+
|
|
35
|
+
|
|
1
36
|
Version 3.1.8 - 2013-02-05 16:29:43 +0100
|
|
2
37
|
===============================================================================
|
|
3
38
|
|
|
@@ -1070,3 +1105,4 @@ Nick Quaranto (3):
|
|
|
1070
1105
|
|
|
1071
1106
|
|
|
1072
1107
|
|
|
1108
|
+
|
data/README.md
CHANGED
|
@@ -20,7 +20,7 @@ Rails Installation
|
|
|
20
20
|
|
|
21
21
|
Add the airbrake gem to your Gemfile. In Gemfile:
|
|
22
22
|
|
|
23
|
-
gem
|
|
23
|
+
gem 'airbrake'
|
|
24
24
|
|
|
25
25
|
Then from your project's RAILS_ROOT, and in your development environment, run:
|
|
26
26
|
|
|
@@ -103,4 +103,4 @@ The names and logos for Airbrake, thoughtbot are trademarks of their respective
|
|
|
103
103
|
License
|
|
104
104
|
-------
|
|
105
105
|
|
|
106
|
-
Airbrake is Copyright © 2008-
|
|
106
|
+
Airbrake is Copyright © 2008-2013 Airbrake.
|
data/TESTED_AGAINST
CHANGED
data/features/rails.feature
CHANGED
|
@@ -34,9 +34,16 @@ Feature: Install the Gem in a Rails application
|
|
|
34
34
|
Then I should receive a Airbrake notification
|
|
35
35
|
|
|
36
36
|
Scenario: Try to install without an api key
|
|
37
|
-
|
|
37
|
+
When I run `rails generate airbrake`
|
|
38
38
|
Then I should see "Must pass --api-key or --heroku or create config/initializers/airbrake.rb"
|
|
39
39
|
|
|
40
|
+
Scenario: Generator should support the --secure option
|
|
41
|
+
When I run `rails generate airbrake -k myapikey --secure`
|
|
42
|
+
Then my Airbrake configuration should contain the following line:
|
|
43
|
+
"""
|
|
44
|
+
config.secure = true
|
|
45
|
+
"""
|
|
46
|
+
|
|
40
47
|
Scenario: Configure and deploy using only installed gem
|
|
41
48
|
When I run `capify .`
|
|
42
49
|
And I configure the Airbrake shim
|
|
@@ -218,6 +225,24 @@ Feature: Install the Gem in a Rails application
|
|
|
218
225
|
Then I should receive a Airbrake notification
|
|
219
226
|
And the Airbrake notification should contain user details
|
|
220
227
|
|
|
228
|
+
Scenario: It should also send custom user attributes
|
|
229
|
+
When I configure the Airbrake shim
|
|
230
|
+
And I configure the notifier to use the following configuration lines:
|
|
231
|
+
"""
|
|
232
|
+
config.api_key = "myapikey"
|
|
233
|
+
config.logger = Logger.new STDOUT
|
|
234
|
+
config.user_attributes = [:id, :name, :email, :username, :class_name]
|
|
235
|
+
"""
|
|
236
|
+
And I define a response for "TestController#index":
|
|
237
|
+
"""
|
|
238
|
+
raise RuntimeError, "some message"
|
|
239
|
+
"""
|
|
240
|
+
And I route "/test/index" to "test#index"
|
|
241
|
+
And I have set up authentication system in my app that uses "current_user"
|
|
242
|
+
And I perform a request to "http://example.com:123/test/index" in the "production" environment
|
|
243
|
+
Then I should receive a Airbrake notification
|
|
244
|
+
And the Airbrake notification should contain the custom user details
|
|
245
|
+
|
|
221
246
|
Scenario: It should log the notice when failure happens
|
|
222
247
|
When Airbrake server is not responding
|
|
223
248
|
And I configure the notifier to use the following configuration lines:
|
|
@@ -83,3 +83,22 @@ Feature: Install the Gem in a Rails application and enable the JavaScript notifi
|
|
|
83
83
|
Then I should see the notifier JavaScript for the following:
|
|
84
84
|
| api_key | environment | host |
|
|
85
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 |
|
|
@@ -227,18 +227,22 @@ When /^I have set up authentication system in my app that uses "([^\"]*)"$/ do |
|
|
|
227
227
|
|
|
228
228
|
# this is the ultimate authentication system, devise is history
|
|
229
229
|
def #{current_user}
|
|
230
|
-
Struct.new(:id, :name, :email, :username).new(1, 'Bender', 'bender@beer.com', 'b3nd0r')
|
|
230
|
+
Struct.new(:id, :name, :email, :username, :class_name).new(1, 'Bender', 'bender@beer.com', 'b3nd0r', 'User')
|
|
231
231
|
end
|
|
232
232
|
end
|
|
233
233
|
"""
|
|
234
234
|
File.open(application_controller, "w") {|file| file.puts definition }
|
|
235
235
|
end
|
|
236
236
|
|
|
237
|
+
Then /^the Airbrake notification should contain the custom user details$/ do
|
|
238
|
+
step %{I should see "<name>Bender</name>"}
|
|
239
|
+
step %{I should see "<email>bender@beer.com</email>"}
|
|
240
|
+
step %{I should see "<username>b3nd0r</username>"}
|
|
241
|
+
step %{I should see "<class_name>User</class_name>"}
|
|
242
|
+
end
|
|
243
|
+
|
|
237
244
|
Then /^the Airbrake notification should contain user details$/ do
|
|
238
|
-
step %{I should see "Bender"}
|
|
239
|
-
step %{I should see "bender@beer.com"}
|
|
240
245
|
step %{I should see "<id>1</id>"}
|
|
241
|
-
step %{I should see "b3nd0r"}
|
|
242
246
|
end
|
|
243
247
|
|
|
244
248
|
Then /^the Airbrake notification should contain the framework information$/ do
|
data/lib/airbrake/backtrace.rb
CHANGED
|
@@ -14,26 +14,26 @@ module Airbrake
|
|
|
14
14
|
# The line number portion of the line
|
|
15
15
|
attr_reader :number
|
|
16
16
|
|
|
17
|
-
# The
|
|
18
|
-
attr_reader :
|
|
17
|
+
# The method_name of the line (such as index)
|
|
18
|
+
attr_reader :method_name
|
|
19
19
|
|
|
20
20
|
# Parses a single line of a given backtrace
|
|
21
21
|
# @param [String] unparsed_line The raw line from +caller+ or some backtrace
|
|
22
22
|
# @return [Line] The parsed backtrace line
|
|
23
23
|
def self.parse(unparsed_line)
|
|
24
|
-
_, file, number,
|
|
25
|
-
new(file, number,
|
|
24
|
+
_, file, number, method_name = unparsed_line.match(INPUT_FORMAT).to_a
|
|
25
|
+
new(file, number, method_name)
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
def initialize(file, number,
|
|
28
|
+
def initialize(file, number, method_name)
|
|
29
29
|
self.file = file
|
|
30
30
|
self.number = number
|
|
31
|
-
self.
|
|
31
|
+
self.method_name = method_name
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
# Reconstructs the line in a readable fashion
|
|
35
35
|
def to_s
|
|
36
|
-
"#{file}:#{number}:in `#{
|
|
36
|
+
"#{file}:#{number}:in `#{method_name}'"
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def ==(other)
|
|
@@ -46,7 +46,7 @@ module Airbrake
|
|
|
46
46
|
|
|
47
47
|
private
|
|
48
48
|
|
|
49
|
-
attr_writer :file, :number, :
|
|
49
|
+
attr_writer :file, :number, :method_name
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
# holder for an Array of Backtrace::Line instances
|
data/lib/airbrake/capistrano.rb
CHANGED
|
@@ -19,7 +19,7 @@ module Airbrake
|
|
|
19
19
|
airbrake_env = fetch(:airbrake_env, fetch(:rails_env, "production"))
|
|
20
20
|
local_user = ENV['USER'] || ENV['USERNAME']
|
|
21
21
|
executable = RUBY_PLATFORM.downcase.include?('mswin') ? fetch(:rake, 'rake.bat') : fetch(:rake, 'rake')
|
|
22
|
-
directory = configuration.
|
|
22
|
+
directory = configuration.release_path
|
|
23
23
|
notify_command = "cd #{directory}; #{executable} RAILS_ENV=#{rails_env} airbrake:deploy TO=#{airbrake_env} REVISION=#{current_revision} REPO=#{repository} USER=#{local_user}"
|
|
24
24
|
notify_command << " DRY_RUN=true" if dry_run
|
|
25
25
|
notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY']
|
|
@@ -113,7 +113,7 @@ module Airbrake
|
|
|
113
113
|
|
|
114
114
|
DEFAULT_PARAMS_FILTERS = %w(password password_confirmation).freeze
|
|
115
115
|
|
|
116
|
-
DEFAULT_USER_ATTRIBUTES = %w(id
|
|
116
|
+
DEFAULT_USER_ATTRIBUTES = %w(id).freeze
|
|
117
117
|
|
|
118
118
|
DEFAULT_BACKTRACE_FILTERS = [
|
|
119
119
|
lambda { |line|
|
data/lib/airbrake/notice.rb
CHANGED
|
@@ -156,9 +156,11 @@ module Airbrake
|
|
|
156
156
|
error.message(error_message)
|
|
157
157
|
error.backtrace do |backtrace|
|
|
158
158
|
self.backtrace.lines.each do |line|
|
|
159
|
-
backtrace.line(
|
|
160
|
-
|
|
161
|
-
|
|
159
|
+
backtrace.line(
|
|
160
|
+
:number => line.number,
|
|
161
|
+
:file => line.file,
|
|
162
|
+
:method_name => line.method_name
|
|
163
|
+
)
|
|
162
164
|
end
|
|
163
165
|
end
|
|
164
166
|
end
|
|
@@ -196,10 +198,9 @@ module Airbrake
|
|
|
196
198
|
end
|
|
197
199
|
unless user.blank?
|
|
198
200
|
notice.tag!("current-user") do |u|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
u.tag!("username",user[:username])
|
|
201
|
+
user.each do |attr, value|
|
|
202
|
+
u.tag!(attr.to_s, value)
|
|
203
|
+
end
|
|
203
204
|
end
|
|
204
205
|
end
|
|
205
206
|
unless framework.blank?
|
|
@@ -223,7 +224,7 @@ module Airbrake
|
|
|
223
224
|
{
|
|
224
225
|
'file' => line.file,
|
|
225
226
|
'line' => line.number.to_i,
|
|
226
|
-
'function' => line.
|
|
227
|
+
'function' => line.method_name
|
|
227
228
|
}
|
|
228
229
|
end
|
|
229
230
|
}],
|
data/lib/airbrake/rack.rb
CHANGED
|
@@ -40,23 +40,22 @@ module Airbrake
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def call(env)
|
|
43
|
-
@env = env
|
|
44
43
|
begin
|
|
45
|
-
response = @app.call(
|
|
44
|
+
response = @app.call(env)
|
|
46
45
|
rescue Exception => raised
|
|
47
|
-
|
|
46
|
+
env['airbrake.error_id'] = notify_airbrake(raised, env)
|
|
48
47
|
raise raised
|
|
49
48
|
end
|
|
50
49
|
|
|
51
|
-
if framework_exception
|
|
52
|
-
|
|
50
|
+
if framework_exception(env)
|
|
51
|
+
env['airbrake.error_id'] = notify_airbrake(framework_exception(env), env)
|
|
53
52
|
end
|
|
54
53
|
|
|
55
54
|
response
|
|
56
55
|
end
|
|
57
56
|
|
|
58
|
-
def framework_exception
|
|
59
|
-
|
|
57
|
+
def framework_exception(env)
|
|
58
|
+
env['rack.exception']
|
|
60
59
|
end
|
|
61
60
|
|
|
62
61
|
end
|
|
@@ -33,18 +33,22 @@ module Airbrake
|
|
|
33
33
|
|
|
34
34
|
options = airbrake_javascript_notifier_options
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
result = airbrake_compile_template
|
|
37
|
+
|
|
38
|
+
if result.respond_to?(:html_safe)
|
|
39
|
+
result.html_safe
|
|
38
40
|
else
|
|
39
|
-
|
|
41
|
+
result
|
|
40
42
|
end
|
|
43
|
+
end
|
|
41
44
|
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
def airbrake_compile_template
|
|
46
|
+
case @template
|
|
47
|
+
when ActionView::Template
|
|
48
|
+
@template.render airbrake_javascript_notifier_options
|
|
44
49
|
else
|
|
45
|
-
|
|
50
|
+
render_to_string airbrake_javascript_notifier_options
|
|
46
51
|
end
|
|
47
|
-
|
|
48
52
|
end
|
|
49
53
|
end
|
|
50
54
|
end
|
|
@@ -9,17 +9,15 @@ module Airbrake
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def call(env)
|
|
12
|
-
@env = env
|
|
13
|
-
|
|
14
12
|
begin
|
|
15
|
-
response = @app.call(
|
|
13
|
+
response = @app.call(env)
|
|
16
14
|
rescue Exception => exception
|
|
17
|
-
|
|
15
|
+
env['airbrake.error_id'] = notify_airbrake(env, exception)
|
|
18
16
|
raise exception
|
|
19
17
|
end
|
|
20
18
|
|
|
21
|
-
if framework_exception
|
|
22
|
-
|
|
19
|
+
if framework_exception = env["action_dispatch.exception"]
|
|
20
|
+
env["airbrake.error_id"] = notify_airbrake(env, framework_exception)
|
|
23
21
|
end
|
|
24
22
|
|
|
25
23
|
response
|
|
@@ -27,38 +25,34 @@ module Airbrake
|
|
|
27
25
|
|
|
28
26
|
private
|
|
29
27
|
|
|
30
|
-
def
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
def after_airbrake_handler(env, exception)
|
|
29
|
+
if defined? env["action_controller.instance"].
|
|
30
|
+
rescue_action_in_public_without_airbrake
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
controller.rescue_action_in_public_without_airbrake(exception)
|
|
32
|
+
env["action_controller.instance"].
|
|
33
|
+
rescue_action_in_public_without_airbrake(exception)
|
|
37
34
|
end
|
|
38
35
|
end
|
|
39
36
|
|
|
40
|
-
def notify_airbrake(exception)
|
|
41
|
-
unless ignored_user_agent?
|
|
42
|
-
error_id = Airbrake.notify_or_ignore(exception, request_data)
|
|
43
|
-
after_airbrake_handler(exception)
|
|
37
|
+
def notify_airbrake(env, exception)
|
|
38
|
+
unless ignored_user_agent? env
|
|
39
|
+
error_id = Airbrake.notify_or_ignore(exception, request_data(env))
|
|
40
|
+
after_airbrake_handler(env, exception)
|
|
44
41
|
error_id
|
|
45
42
|
end
|
|
46
43
|
end
|
|
47
44
|
|
|
48
|
-
def request_data
|
|
49
|
-
|
|
45
|
+
def request_data(env)
|
|
46
|
+
env["action_controller.instance"].try(:airbrake_request_data) ||
|
|
47
|
+
{:rack_env => @env}
|
|
50
48
|
end
|
|
51
49
|
|
|
52
|
-
def ignored_user_agent?
|
|
50
|
+
def ignored_user_agent?(env)
|
|
53
51
|
true if Airbrake.
|
|
54
52
|
configuration.
|
|
55
53
|
ignore_user_agent.
|
|
56
54
|
flatten.
|
|
57
|
-
any? { |ua| ua ===
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def framework_exception
|
|
61
|
-
@env["action_dispatch.exception"]
|
|
55
|
+
any? { |ua| ua === env['HTTP_USER_AGENT'] }
|
|
62
56
|
end
|
|
63
57
|
end
|
|
64
58
|
end
|
data/lib/airbrake/sender.rb
CHANGED
data/lib/airbrake/sinatra.rb
CHANGED
|
@@ -24,11 +24,10 @@ module Airbrake
|
|
|
24
24
|
super
|
|
25
25
|
Airbrake.configuration.environment_name = "#{app.settings.environment}"
|
|
26
26
|
Airbrake.configuration.framework = "Sinatra: #{::Sinatra::VERSION}"
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def framework_exception
|
|
30
|
-
@env['sinatra.error']
|
|
31
27
|
end
|
|
32
28
|
|
|
29
|
+
def framework_exception(env)
|
|
30
|
+
env['sinatra.error']
|
|
31
|
+
end
|
|
33
32
|
end
|
|
34
33
|
end
|
data/lib/airbrake/version.rb
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
require 'rails/generators'
|
|
2
2
|
|
|
3
3
|
class AirbrakeGenerator < Rails::Generators::Base
|
|
4
|
+
desc "Creates the Airbrake initializer file at config/initializers/airbrake.rb"
|
|
4
5
|
|
|
5
|
-
class_option :api_key, :aliases => "-k", :type => :string,
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
class_option :api_key, :aliases => "-k", :type => :string,
|
|
7
|
+
:desc => "Your Airbrake API key"
|
|
8
|
+
|
|
9
|
+
class_option :heroku, :type => :boolean,
|
|
10
|
+
:desc => "Use the Heroku addon to provide your Airbrake API key"
|
|
11
|
+
|
|
12
|
+
class_option :app, :aliases => "-a", :type => :string,
|
|
13
|
+
:desc => "Your Heroku app name (only required if deploying to >1 Heroku app)"
|
|
14
|
+
|
|
15
|
+
class_option :secure, :type => :boolean,
|
|
16
|
+
:desc => "Use SSL connection"
|
|
8
17
|
|
|
9
18
|
def self.source_root
|
|
10
19
|
@_airbrake_source_root ||= File.expand_path("../../../../../generators/airbrake/templates", __FILE__)
|
|
@@ -80,6 +89,10 @@ class AirbrakeGenerator < Rails::Generators::Base
|
|
|
80
89
|
heroku_var("AIRBRAKE_API_KEY",options[:app]).split.find {|x| x unless x.blank?}
|
|
81
90
|
end
|
|
82
91
|
|
|
92
|
+
def secure?
|
|
93
|
+
options[:secure]
|
|
94
|
+
end
|
|
95
|
+
|
|
83
96
|
def heroku?
|
|
84
97
|
options[:heroku] ||
|
|
85
98
|
system("grep AIRBRAKE_API_KEY config/initializers/airbrake.rb") ||
|
|
@@ -97,4 +110,14 @@ class AirbrakeGenerator < Rails::Generators::Base
|
|
|
97
110
|
def plugin_is_present?
|
|
98
111
|
File.exists?('vendor/plugins/airbrake')
|
|
99
112
|
end
|
|
113
|
+
|
|
114
|
+
def configuration_output
|
|
115
|
+
output = <<-eos
|
|
116
|
+
Airbrake.configure do |config|
|
|
117
|
+
config.api_key = #{api_key_expression}
|
|
118
|
+
eos
|
|
119
|
+
|
|
120
|
+
output << " config.secure = true" if secure?
|
|
121
|
+
output << "\nend"
|
|
122
|
+
end
|
|
100
123
|
end
|
data/resources/airbrake_2_4.xsd
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
<xs:complexType>
|
|
39
39
|
<xs:attribute name="file" type="xs:string" use="required"/>
|
|
40
40
|
<xs:attribute name="number" type="xs:string" use="required"/>
|
|
41
|
-
<xs:attribute name="
|
|
41
|
+
<xs:attribute name="method_name" type="xs:string" use="optional"/>
|
|
42
42
|
</xs:complexType>
|
|
43
43
|
</xs:element>
|
|
44
44
|
</xs:sequence>
|
data/test/backtrace_test.rb
CHANGED
|
@@ -13,12 +13,12 @@ class BacktraceTest < Test::Unit::TestCase
|
|
|
13
13
|
line = backtrace.lines.first
|
|
14
14
|
assert_equal '13', line.number
|
|
15
15
|
assert_equal 'app/models/user.rb', line.file
|
|
16
|
-
assert_equal 'magic', line.
|
|
16
|
+
assert_equal 'magic', line.method_name
|
|
17
17
|
|
|
18
18
|
line = backtrace.lines.last
|
|
19
19
|
assert_equal '8', line.number
|
|
20
20
|
assert_equal 'app/controllers/users_controller.rb', line.file
|
|
21
|
-
assert_equal 'index', line.
|
|
21
|
+
assert_equal 'index', line.method_name
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
should "parse a windows backtrace into lines" do
|
|
@@ -32,12 +32,12 @@ class BacktraceTest < Test::Unit::TestCase
|
|
|
32
32
|
line = backtrace.lines.first
|
|
33
33
|
assert_equal '13', line.number
|
|
34
34
|
assert_equal 'C:/Program Files/Server/app/models/user.rb', line.file
|
|
35
|
-
assert_equal 'magic', line.
|
|
35
|
+
assert_equal 'magic', line.method_name
|
|
36
36
|
|
|
37
37
|
line = backtrace.lines.last
|
|
38
38
|
assert_equal '8', line.number
|
|
39
39
|
assert_equal 'C:/Program Files/Server/app/controllers/users_controller.rb', line.file
|
|
40
|
-
assert_equal 'index', line.
|
|
40
|
+
assert_equal 'index', line.method_name
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
should "be equal with equal lines" do
|
data/test/capistrano_test.rb
CHANGED
|
@@ -20,7 +20,7 @@ class CapistranoTest < Test::Unit::TestCase
|
|
|
20
20
|
should "log when calling airbrake:deploy task" do
|
|
21
21
|
@configuration.set(:current_revision, '084505b1c0e0bcf1526e673bb6ac99fbcb18aecc')
|
|
22
22
|
@configuration.set(:repository, 'repository')
|
|
23
|
-
@configuration.set(:
|
|
23
|
+
@configuration.set(:release_path, '/home/deploy/rails_app/hoptoad')
|
|
24
24
|
io = StringIO.new
|
|
25
25
|
logger = Capistrano::Logger.new(:output => io)
|
|
26
26
|
logger.level = Capistrano::Logger::MAX_LEVEL
|
data/test/notice_test.rb
CHANGED
|
@@ -351,7 +351,7 @@ class NoticeTest < Test::Unit::TestCase
|
|
|
351
351
|
|
|
352
352
|
assert_valid_node(@document, "//error/backtrace/line/@number", @notice.backtrace.lines.first.number)
|
|
353
353
|
assert_valid_node(@document, "//error/backtrace/line/@file", @notice.backtrace.lines.first.file)
|
|
354
|
-
assert_valid_node(@document, "//error/backtrace/line/@
|
|
354
|
+
assert_valid_node(@document, "//error/backtrace/line/@method_name", @notice.backtrace.lines.first.method_name)
|
|
355
355
|
|
|
356
356
|
assert_valid_node(@document, "//request/url", @notice.url)
|
|
357
357
|
assert_valid_node(@document, "//request/component", @notice.controller)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: airbrake
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.1.
|
|
4
|
+
version: 3.1.9
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
12
|
+
date: 2013-03-25 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: builder
|
|
@@ -274,49 +274,49 @@ executables:
|
|
|
274
274
|
extensions: []
|
|
275
275
|
extra_rdoc_files: []
|
|
276
276
|
files:
|
|
277
|
-
- generators/airbrake/
|
|
278
|
-
- generators/airbrake/templates/initializer.rb
|
|
277
|
+
- generators/airbrake/airbrake_generator.rb
|
|
279
278
|
- generators/airbrake/templates/airbrake_tasks.rake
|
|
280
|
-
- generators/airbrake/
|
|
279
|
+
- generators/airbrake/templates/initializer.rb
|
|
280
|
+
- generators/airbrake/templates/capistrano_hook.rb
|
|
281
281
|
- generators/airbrake/lib/rake_commands.rb
|
|
282
|
-
- generators/airbrake/
|
|
283
|
-
- lib/airbrake
|
|
282
|
+
- generators/airbrake/lib/insert_commands.rb
|
|
283
|
+
- lib/airbrake.rb
|
|
284
|
+
- lib/airbrake/railtie.rb
|
|
284
285
|
- lib/airbrake/shared_tasks.rb
|
|
285
|
-
- lib/airbrake/
|
|
286
|
-
- lib/airbrake/rails/action_controller_catcher.rb
|
|
287
|
-
- lib/airbrake/rails/middleware.rb
|
|
288
|
-
- lib/airbrake/rails/controller_methods.rb
|
|
289
|
-
- lib/airbrake/rails/error_lookup.rb
|
|
290
|
-
- lib/airbrake/rails/javascript_notifier.rb
|
|
286
|
+
- lib/airbrake/backtrace.rb
|
|
291
287
|
- lib/airbrake/rails.rb
|
|
292
|
-
- lib/airbrake/
|
|
293
|
-
- lib/airbrake/
|
|
288
|
+
- lib/airbrake/version.rb
|
|
289
|
+
- lib/airbrake/rails3_tasks.rb
|
|
290
|
+
- lib/airbrake/user_informer.rb
|
|
294
291
|
- lib/airbrake/cli/project_factory.rb
|
|
292
|
+
- lib/airbrake/cli/printer.rb
|
|
295
293
|
- lib/airbrake/cli/project.rb
|
|
296
294
|
- lib/airbrake/cli/client.rb
|
|
297
295
|
- lib/airbrake/cli/options.rb
|
|
298
|
-
- lib/airbrake/cli/validator.rb
|
|
299
296
|
- lib/airbrake/cli/runner.rb
|
|
297
|
+
- lib/airbrake/cli/validator.rb
|
|
298
|
+
- lib/airbrake/notice.rb
|
|
299
|
+
- lib/airbrake/rack.rb
|
|
300
300
|
- lib/airbrake/tasks.rb
|
|
301
|
-
- lib/airbrake/rails3_tasks.rb
|
|
302
301
|
- lib/airbrake/configuration.rb
|
|
303
|
-
- lib/airbrake/
|
|
304
|
-
- lib/airbrake/
|
|
302
|
+
- lib/airbrake/rails/controller_methods.rb
|
|
303
|
+
- lib/airbrake/rails/error_lookup.rb
|
|
304
|
+
- lib/airbrake/rails/javascript_notifier.rb
|
|
305
|
+
- lib/airbrake/rails/middleware.rb
|
|
306
|
+
- lib/airbrake/rails/action_controller_catcher.rb
|
|
307
|
+
- lib/airbrake/sender.rb
|
|
308
|
+
- lib/airbrake/capistrano.rb
|
|
305
309
|
- lib/airbrake/rake_handler.rb
|
|
306
|
-
- lib/airbrake/
|
|
307
|
-
- lib/airbrake/backtrace.rb
|
|
308
|
-
- lib/airbrake/notice.rb
|
|
309
|
-
- lib/airbrake/user_informer.rb
|
|
310
|
-
- lib/airbrake.rb
|
|
310
|
+
- lib/airbrake/sinatra.rb
|
|
311
311
|
- lib/rails/generators/airbrake/airbrake_generator.rb
|
|
312
312
|
- lib/templates/javascript_notifier.erb
|
|
313
313
|
- lib/templates/rescue.erb
|
|
314
314
|
- lib/airbrake_tasks.rb
|
|
315
315
|
- rails/init.rb
|
|
316
|
+
- resources/ca-bundle.crt
|
|
316
317
|
- resources/airbrake_2_4.xsd
|
|
317
|
-
- resources/airbrake_3_0.json
|
|
318
318
|
- resources/README.md
|
|
319
|
-
- resources/
|
|
319
|
+
- resources/airbrake_3_0.json
|
|
320
320
|
- script/integration_test.rb
|
|
321
321
|
- airbrake.gemspec
|
|
322
322
|
- CHANGELOG
|
|
@@ -329,39 +329,39 @@ files:
|
|
|
329
329
|
- README.md
|
|
330
330
|
- TESTED_AGAINST
|
|
331
331
|
- install.rb
|
|
332
|
-
- test/
|
|
332
|
+
- test/recursion_test.rb
|
|
333
|
+
- test/sender_test.rb
|
|
334
|
+
- test/notifier_test.rb
|
|
333
335
|
- test/configuration_test.rb
|
|
334
336
|
- test/airbrake_tasks_test.rb
|
|
335
|
-
- test/
|
|
336
|
-
- test/notifier_test.rb
|
|
337
|
-
- test/capistrano_test.rb
|
|
338
|
-
- test/user_informer_test.rb
|
|
339
|
-
- test/javascript_notifier_test.rb
|
|
340
|
-
- test/backtrace_test.rb
|
|
337
|
+
- test/controller_methods_test.rb
|
|
341
338
|
- test/rack_test.rb
|
|
342
|
-
- test/recursion_test.rb
|
|
343
339
|
- test/notice_test.rb
|
|
344
|
-
- test/rails_initializer_test.rb
|
|
345
|
-
- test/sender_test.rb
|
|
346
340
|
- test/helper.rb
|
|
341
|
+
- test/javascript_notifier_test.rb
|
|
342
|
+
- test/backtrace_test.rb
|
|
343
|
+
- test/catcher_test.rb
|
|
344
|
+
- test/rails_initializer_test.rb
|
|
345
|
+
- test/capistrano_test.rb
|
|
346
|
+
- test/user_informer_test.rb
|
|
347
347
|
- test/logger_test.rb
|
|
348
|
-
- features/
|
|
348
|
+
- features/rails.feature
|
|
349
|
+
- features/step_definitions/rails_application_steps.rb
|
|
350
|
+
- features/step_definitions/rake_steps.rb
|
|
351
|
+
- features/step_definitions/rack_steps.rb
|
|
352
|
+
- features/step_definitions/file_steps.rb
|
|
349
353
|
- features/metal.feature
|
|
350
|
-
- features/
|
|
351
|
-
- features/support/rake/Rakefile
|
|
352
|
-
- features/support/rails.rb
|
|
353
|
-
- features/support/aruba.rb
|
|
354
|
+
- features/rack.feature
|
|
354
355
|
- features/support/matchers.rb
|
|
355
356
|
- features/support/env.rb
|
|
356
|
-
- features/
|
|
357
|
+
- features/support/aruba.rb
|
|
358
|
+
- features/support/rails.rb
|
|
359
|
+
- features/support/rake/Rakefile
|
|
360
|
+
- features/support/airbrake_shim.rb.template
|
|
357
361
|
- features/user_informer.feature
|
|
358
|
-
- features/step_definitions/rack_steps.rb
|
|
359
|
-
- features/step_definitions/file_steps.rb
|
|
360
|
-
- features/step_definitions/rake_steps.rb
|
|
361
|
-
- features/step_definitions/rails_application_steps.rb
|
|
362
362
|
- features/rake.feature
|
|
363
|
-
- features/sinatra.feature
|
|
364
363
|
- features/rails_with_js_notifier.feature
|
|
364
|
+
- features/sinatra.feature
|
|
365
365
|
- bin/airbrake
|
|
366
366
|
homepage: http://www.airbrake.io
|
|
367
367
|
licenses: []
|
|
@@ -383,41 +383,41 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
383
383
|
version: '0'
|
|
384
384
|
requirements: []
|
|
385
385
|
rubyforge_project:
|
|
386
|
-
rubygems_version: 1.8.
|
|
386
|
+
rubygems_version: 1.8.25
|
|
387
387
|
signing_key:
|
|
388
388
|
specification_version: 3
|
|
389
389
|
summary: Send your application errors to our hosted service and reclaim your inbox.
|
|
390
390
|
test_files:
|
|
391
|
-
- test/
|
|
391
|
+
- test/recursion_test.rb
|
|
392
|
+
- test/sender_test.rb
|
|
393
|
+
- test/notifier_test.rb
|
|
392
394
|
- test/configuration_test.rb
|
|
393
395
|
- test/airbrake_tasks_test.rb
|
|
394
|
-
- test/
|
|
395
|
-
- test/notifier_test.rb
|
|
396
|
-
- test/capistrano_test.rb
|
|
397
|
-
- test/user_informer_test.rb
|
|
398
|
-
- test/javascript_notifier_test.rb
|
|
399
|
-
- test/backtrace_test.rb
|
|
396
|
+
- test/controller_methods_test.rb
|
|
400
397
|
- test/rack_test.rb
|
|
401
|
-
- test/recursion_test.rb
|
|
402
398
|
- test/notice_test.rb
|
|
403
|
-
- test/rails_initializer_test.rb
|
|
404
|
-
- test/sender_test.rb
|
|
405
399
|
- test/helper.rb
|
|
400
|
+
- test/javascript_notifier_test.rb
|
|
401
|
+
- test/backtrace_test.rb
|
|
402
|
+
- test/catcher_test.rb
|
|
403
|
+
- test/rails_initializer_test.rb
|
|
404
|
+
- test/capistrano_test.rb
|
|
405
|
+
- test/user_informer_test.rb
|
|
406
406
|
- test/logger_test.rb
|
|
407
|
-
- features/
|
|
407
|
+
- features/rails.feature
|
|
408
|
+
- features/step_definitions/rails_application_steps.rb
|
|
409
|
+
- features/step_definitions/rake_steps.rb
|
|
410
|
+
- features/step_definitions/rack_steps.rb
|
|
411
|
+
- features/step_definitions/file_steps.rb
|
|
408
412
|
- features/metal.feature
|
|
409
|
-
- features/
|
|
410
|
-
- features/support/rake/Rakefile
|
|
411
|
-
- features/support/rails.rb
|
|
412
|
-
- features/support/aruba.rb
|
|
413
|
+
- features/rack.feature
|
|
413
414
|
- features/support/matchers.rb
|
|
414
415
|
- features/support/env.rb
|
|
415
|
-
- features/
|
|
416
|
+
- features/support/aruba.rb
|
|
417
|
+
- features/support/rails.rb
|
|
418
|
+
- features/support/rake/Rakefile
|
|
419
|
+
- features/support/airbrake_shim.rb.template
|
|
416
420
|
- features/user_informer.feature
|
|
417
|
-
- features/step_definitions/rack_steps.rb
|
|
418
|
-
- features/step_definitions/file_steps.rb
|
|
419
|
-
- features/step_definitions/rake_steps.rb
|
|
420
|
-
- features/step_definitions/rails_application_steps.rb
|
|
421
421
|
- features/rake.feature
|
|
422
|
-
- features/sinatra.feature
|
|
423
422
|
- features/rails_with_js_notifier.feature
|
|
423
|
+
- features/sinatra.feature
|