Commit 8afd2efe2159021ca59548525e14dcae528c52ca
1 parent
d3f91ed4
Exists in
master
and in
1 other branch
update airbrake api to 2.4
Showing
8 changed files
with
31 additions
and
6 deletions
Show diff stats
app/models/error_report.rb
| @@ -2,7 +2,7 @@ require 'digest/sha1' | @@ -2,7 +2,7 @@ require 'digest/sha1' | ||
| 2 | require 'hoptoad_notifier' | 2 | require 'hoptoad_notifier' |
| 3 | 3 | ||
| 4 | class ErrorReport | 4 | class ErrorReport |
| 5 | - attr_reader :error_class, :message, :request, :server_environment, :api_key, :notifier, :user_attributes, :current_user | 5 | + attr_reader :error_class, :message, :request, :server_environment, :api_key, :notifier, :user_attributes, :current_user, :framework |
| 6 | 6 | ||
| 7 | def initialize(xml_or_attributes) | 7 | def initialize(xml_or_attributes) |
| 8 | @attributes = (xml_or_attributes.is_a?(String) ? Hoptoad.parse_xml!(xml_or_attributes) : xml_or_attributes).with_indifferent_access | 8 | @attributes = (xml_or_attributes.is_a?(String) ? Hoptoad.parse_xml!(xml_or_attributes) : xml_or_attributes).with_indifferent_access |
| @@ -42,7 +42,8 @@ class ErrorReport | @@ -42,7 +42,8 @@ class ErrorReport | ||
| 42 | :server_environment => server_environment, | 42 | :server_environment => server_environment, |
| 43 | :notifier => notifier, | 43 | :notifier => notifier, |
| 44 | :user_attributes => user_attributes, | 44 | :user_attributes => user_attributes, |
| 45 | - :current_user => current_user | 45 | + :current_user => current_user, |
| 46 | + :framework => framework | ||
| 46 | ) | 47 | ) |
| 47 | 48 | ||
| 48 | err = app.find_or_create_err!( | 49 | err = app.find_or_create_err!( |
app/models/notice.rb
| @@ -11,6 +11,7 @@ class Notice | @@ -11,6 +11,7 @@ class Notice | ||
| 11 | field :notifier, :type => Hash | 11 | field :notifier, :type => Hash |
| 12 | field :user_attributes, :type => Hash | 12 | field :user_attributes, :type => Hash |
| 13 | field :current_user, :type => Hash | 13 | field :current_user, :type => Hash |
| 14 | + field :framework | ||
| 14 | field :error_class | 15 | field :error_class |
| 15 | delegate :lines, :to => :backtrace, :prefix => true | 16 | delegate :lines, :to => :backtrace, :prefix => true |
| 16 | delegate :app, :problem, :to => :err | 17 | delegate :app, :problem, :to => :err |
app/views/notices/_summary.html.haml
| @@ -28,6 +28,10 @@ | @@ -28,6 +28,10 @@ | ||
| 28 | %tr | 28 | %tr |
| 29 | %th App Server | 29 | %th App Server |
| 30 | %td= notice.server_environment && notice.server_environment["hostname"] | 30 | %td= notice.server_environment && notice.server_environment["hostname"] |
| 31 | + - if notice.framework | ||
| 32 | + %tr | ||
| 33 | + %th Framework | ||
| 34 | + %td= notice.framework | ||
| 31 | %tr | 35 | %tr |
| 32 | %th Rel. Directory | 36 | %th Rel. Directory |
| 33 | %td= notice.server_environment && notice.server_environment["project-root"] | 37 | %td= notice.server_environment && notice.server_environment["project-root"] |
lib/hoptoad.rb
| @@ -3,7 +3,7 @@ require 'hoptoad/v2' | @@ -3,7 +3,7 @@ require 'hoptoad/v2' | ||
| 3 | module Hoptoad | 3 | module Hoptoad |
| 4 | class ApiVersionError < StandardError | 4 | class ApiVersionError < StandardError |
| 5 | def initialize | 5 | def initialize |
| 6 | - super "Wrong API Version: Expecting 2.0, 2.1, 2.2 or 2.3" | 6 | + super "Wrong API Version: Expecting 2.0, 2.1, 2.2, 2.3 or 2.4" |
| 7 | end | 7 | end |
| 8 | end | 8 | end |
| 9 | 9 | ||
| @@ -16,7 +16,7 @@ module Hoptoad | @@ -16,7 +16,7 @@ module Hoptoad | ||
| 16 | private | 16 | private |
| 17 | def self.get_version_processor(version) | 17 | def self.get_version_processor(version) |
| 18 | case version | 18 | case version |
| 19 | - when /2\.[0123]/; Hoptoad::V2 | 19 | + when /2\.[01234]/; Hoptoad::V2 |
| 20 | else; raise ApiVersionError | 20 | else; raise ApiVersionError |
| 21 | end | 21 | end |
| 22 | end | 22 | end |
lib/hoptoad/v2.rb
| @@ -60,7 +60,8 @@ module Hoptoad | @@ -60,7 +60,8 @@ module Hoptoad | ||
| 60 | :api_key => notice['api-key'], | 60 | :api_key => notice['api-key'], |
| 61 | :notifier => notice['notifier'], | 61 | :notifier => notice['notifier'], |
| 62 | :user_attributes => notice['user-attributes'] || {}, | 62 | :user_attributes => notice['user-attributes'] || {}, |
| 63 | - :current_user => notice['current-user'] || {} | 63 | + :current_user => notice['current-user'] || {}, |
| 64 | + :framework => notice['framework'] | ||
| 64 | } | 65 | } |
| 65 | end | 66 | end |
| 66 | end | 67 | end |
spec/fixtures/hoptoad_test_notice.xml
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | -<notice version="2.3"> | 2 | +<notice version="2.4"> |
| 3 | <api-key>APIKEY</api-key> | 3 | <api-key>APIKEY</api-key> |
| 4 | <notifier> | 4 | <notifier> |
| 5 | <name>Hoptoad Notifier</name> | 5 | <name>Hoptoad Notifier</name> |
| 6 | <version>2.3.2</version> | 6 | <version>2.3.2</version> |
| 7 | <url>http://hoptoadapp.com</url> | 7 | <url>http://hoptoadapp.com</url> |
| 8 | </notifier> | 8 | </notifier> |
| 9 | + <framework>Rails: 3.2.11</framework> | ||
| 9 | <error> | 10 | <error> |
| 10 | <class>HoptoadTestingException</class> | 11 | <class>HoptoadTestingException</class> |
| 11 | <message>HoptoadTestingException: Testing hoptoad via "rake hoptoad:test". If you can see this, it works.</message> | 12 | <message>HoptoadTestingException: Testing hoptoad via "rake hoptoad:test". If you can see this, it works.</message> |
spec/models/app_spec.rb
| @@ -264,6 +264,11 @@ describe App do | @@ -264,6 +264,11 @@ describe App do | ||
| 264 | @notice.current_user['username'].should == 'mrbean' | 264 | @notice.current_user['username'].should == 'mrbean' |
| 265 | end | 265 | end |
| 266 | 266 | ||
| 267 | + it 'captures the framework' do | ||
| 268 | + @notice = App.report_error!(@xml) | ||
| 269 | + @notice.framework.should == 'Rails: 3.2.11' | ||
| 270 | + end | ||
| 271 | + | ||
| 267 | end | 272 | end |
| 268 | 273 | ||
| 269 | 274 |
| @@ -0,0 +1,12 @@ | @@ -0,0 +1,12 @@ | ||
| 1 | +require 'spec_helper' | ||
| 2 | + | ||
| 3 | +describe "notices/_summary.html.haml" do | ||
| 4 | + let(:notice) { Fabricate(:notice, :framework => 'Rails 3.2.11') } | ||
| 5 | + | ||
| 6 | + it "renders application framework" do | ||
| 7 | + render "notices/summary", :notice => notice, :problem => notice.problem | ||
| 8 | + | ||
| 9 | + rendered.should have_content('Rails 3.2.11') | ||
| 10 | + end | ||
| 11 | +end | ||
| 12 | + |