airbrake 4.0.0 → 4.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 72e1f83cf5342499992360dfde17b8f6bf0561b0
4
- data.tar.gz: f9ef7c0e8b84e83ce225242db2ac6f344664fe94
3
+ metadata.gz: 92520a721aab5d73da3d97a7014615e3488fad82
4
+ data.tar.gz: 0b6fa7570aec43283532474d468eeda973d4b45b
5
5
  SHA512:
6
- metadata.gz: 0ce49cf00de6f908dc39b76061926de33500147cb3ac2e91766ed05f22a347c0dcad9704b0bf2535a745b01da96e39d4202dfee8ad46719b9f35e1c5901f64b4
7
- data.tar.gz: a6cf1b8bf91759e3e5cfdd6cbc5d752720428f48465d87980522c3cab288b6115613b271a8521ba483a646836e98aa69bd86db03102d2dfdaac6dea8f8a13ea3
6
+ metadata.gz: d36f715cdaef5b5f3af800ec998df09fcd55ce2304b76879df71dd8a68b42202871b4b4443beda2a7c8071f677a14941915ce91cd92ec3908fa515004589df41
7
+ data.tar.gz: ae00ca913a519e76a6fa8fb7fe31f8daf4a9d9daf94db4d97953d654ab1b8ece9a8b4bd61f656420609c9a1c9f5b53f857e8dff2d58ec1fb43ff1746e71f7869
data/CHANGELOG CHANGED
@@ -1,3 +1,60 @@
1
+ Version 4.1.0 - 2014-09-04 23:16:08 +0200
2
+ ===============================================================================
3
+
4
+ Benjamin Fleischer (1):
5
+ Add license to gemspec, is MIT
6
+
7
+ Chun-wei Kuo (1):
8
+ Add missing RAILS_ENV to the deploy notification task for Capistrano 3
9
+
10
+ David (1):
11
+ Merge pull request #306 from kiela/master
12
+
13
+ Giovanni Cappellotto (1):
14
+ Add support for Sidekiq > 3
15
+
16
+ Kamil Kieliszczyk (2):
17
+ Add ability to filter arrays
18
+ Add ability to filter arrays
19
+
20
+ Kelley Reynolds (1):
21
+ Ignore ActionController::UnknownFormat for Rails 4+ which is now handled by middleware
22
+
23
+ Marko Šiftar (11):
24
+ Revert "Add ability to filter arrays"
25
+ Merge pull request #307 from airbrake/revert-306-master
26
+ Merge pull request #305 from Domon/fix-capistrano3-task
27
+ Merge pull request #302 from gregory/remove_unused_controller
28
+ Merge pull request #310 from kiela/master
29
+ Merge pull request #271 from rykov/master
30
+ Merge pull request #275 from kreynolds/rails-4-unknown-format
31
+ Merge pull request #312 from bf4/add_license_to_gemspe
32
+ Merge pull request #304 from pitchtarget/sidekiq-support
33
+ Merge pull request #273 from meetme2meat/master
34
+ Merge pull request #300 from chute/master
35
+
36
+ Michael Rykov (1):
37
+ Keep passed exception if original_exception is nil
38
+
39
+ Petr Bela (1):
40
+ Add RACK_ENV to rake task for non-Rails apps
41
+
42
+ Sami Haahtinen (1):
43
+ Update capistrano v3 support
44
+
45
+ Viren Negi (1):
46
+ Added a comment to how to add specify environment when use with rack app
47
+
48
+ gregory (1):
49
+ remove unused controller
50
+
51
+ shifi (4):
52
+ update capistrano test to make sure we set RAILS_ENV when using rake task
53
+ Update ignored exceptions by default in Readme
54
+ fix conflicts in airbrake.cap
55
+ Merge branch 'ressu-capistrano3'
56
+
57
+
1
58
  Version 4.0.0 - 2014-05-27 16:32:26 -0700
2
59
  ===============================================================================
3
60
 
@@ -1385,5 +1442,6 @@ Nick Quaranto (3):
1385
1442
 
1386
1443
 
1387
1444
 
1445
+
1388
1446
 
1389
1447
 
data/README.md CHANGED
@@ -62,14 +62,14 @@ The generator creates a file under `config/initializers/airbrake.rb` configuring
62
62
  Ignored exceptions
63
63
  ------------------------
64
64
 
65
- Exceptions raised from Rails environments named **development**, **test** or **cucumber** will be ignored by default.
65
+ Exceptions raised from Rails environments named **development**, **test** or **cucumber** will be ignored by default.
66
66
 
67
67
  You can clear the list of ignored environments with this setting:
68
68
 
69
69
  config.development_environments = []
70
70
 
71
71
  List of ignored exception classes includes:
72
-
72
+
73
73
  ActiveRecord::RecordNotFound
74
74
  ActionController::RoutingError
75
75
  ActionController::InvalidAuthenticityToken
@@ -78,11 +78,12 @@ List of ignored exception classes includes:
78
78
  ActionController::UnknownAction
79
79
  AbstractController::ActionNotFound
80
80
  Mongoid::Errors::DocumentNotFound
81
+ ActionController::UnknownFormat
81
82
 
82
83
  You can alter this list with
83
84
 
84
85
  config.ignore_only = []
85
-
86
+
86
87
  which will cause none of the exception classes to be ignored.
87
88
 
88
89
  Check the [wiki](https://github.com/airbrake/airbrake/wiki/Customizing-your-airbrake.rb) for more customization options.
@@ -114,7 +115,7 @@ integrations with cucumber, you should run the following commands
114
115
  bundle exec rake appraisal:install
115
116
  bundle exec rake
116
117
 
117
- We use [Appraisals](https://github.com/thoughtbot/appraisal) to run the integration
118
+ We use [Appraisals](https://github.com/thoughtbot/appraisal) to run the integration
118
119
  tests.
119
120
 
120
121
  Maintainers
@@ -144,4 +145,4 @@ The names and logos for Airbrake, thoughtbot are trademarks of their respective
144
145
  License
145
146
  -------
146
147
 
147
- Airbrake is Copyright © 2008-2013 Airbrake.
148
+ Airbrake is Copyright © 2008-2013 Airbrake.
@@ -6,6 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.name = %q{airbrake}
7
7
  s.version = Airbrake::VERSION.dup
8
8
  s.summary = %q{Send your application errors to our hosted service and reclaim your inbox.}
9
+ s.license = %q{MIT}
9
10
 
10
11
  s.require_paths = ["lib"]
11
12
  s.executables << "airbrake"
@@ -26,6 +26,11 @@ require 'airbrake/rack'
26
26
  require 'airbrake/sinatra'
27
27
  require 'airbrake/user_informer'
28
28
 
29
+ begin
30
+ require 'airbrake/sidekiq'
31
+ rescue LoadError
32
+ end
33
+
29
34
  require 'airbrake/railtie' if defined?(Rails::Railtie)
30
35
 
31
36
  module Airbrake
@@ -177,9 +182,7 @@ module Airbrake
177
182
  exception.original_exception
178
183
  elsif exception.respond_to?(:continued_exception)
179
184
  exception.continued_exception
180
- else
181
- exception
182
- end
185
+ end || exception
183
186
  end
184
187
  end
185
188
  end
@@ -71,12 +71,13 @@ module Airbrake
71
71
  - Run remotely so we use remote API keys, environment, etc.
72
72
  DESC
73
73
  task :deploy, :except => { :no_release => true } do
74
+ rack_env = fetch(:rack_env, "production")
74
75
  rails_env = fetch(:rails_env, "production")
75
- airbrake_env = fetch(:airbrake_env, fetch(:rails_env, "production"))
76
+ airbrake_env = fetch(:airbrake_env, rack_env || rails_env)
76
77
  local_user = ENV['USER'] || ENV['USERNAME']
77
78
  executable = RUBY_PLATFORM.downcase.include?('mswin') ? fetch(:rake, 'rake.bat') : fetch(:rake, 'bundle exec rake ')
78
79
  directory = configuration.release_path
79
- notify_command = "cd #{directory}; #{executable} RAILS_ENV=#{rails_env} airbrake:deploy TO=#{airbrake_env} REVISION=#{current_revision} REPO=#{repository} USER=#{Airbrake::Capistrano::shellescape(local_user)}"
80
+ notify_command = "cd #{directory}; #{executable} RACK_ENV=#{rack_env} RAILS_ENV=#{rails_env} airbrake:deploy TO=#{airbrake_env} REVISION=#{current_revision} REPO=#{repository} USER=#{Airbrake::Capistrano::shellescape(local_user)}"
80
81
  notify_command << " DRY_RUN=true" if dry_run
81
82
  notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY']
82
83
  logger.info "Notifying Airbrake of Deploy (#{notify_command})"
@@ -1,64 +1,3 @@
1
- # Defines deploy:notify_airbrake which will send information about the deploy to Airbrake.
2
- require 'capistrano'
1
+ # Defines airbrake:deploy which will send information about the deploy to Airbrake.
3
2
 
4
- module Airbrake
5
- module Capistrano
6
- # What follows is a copy-paste backport of the shellescape method
7
- # included in Ruby 1.9 and greater. The FSF's guidance on a snippet
8
- # of this size indicates that such a small function is not subject
9
- # to copyright and as such there is no risk of a license conflict:
10
- # See www.gnu.org/prep/maintain/maintain.html#Legally-Significant
11
- #
12
- # Escapes a string so that it can be safely used in a Bourne shell
13
- # command line. +str+ can be a non-string object that responds to
14
- # +to_s+.
15
- #
16
- # Note that a resulted string should be used unquoted and is not
17
- # intended for use in double quotes nor in single quotes.
18
- #
19
- # argv = Shellwords.escape("It's better to give than to receive")
20
- # argv #=> "It\\'s\\ better\\ to\\ give\\ than\\ to\\ receive"
21
- #
22
- # String#shellescape is a shorthand for this function.
23
- #
24
- # argv = "It's better to give than to receive".shellescape
25
- # argv #=> "It\\'s\\ better\\ to\\ give\\ than\\ to\\ receive"
26
- #
27
- # # Search files in lib for method definitions
28
- # pattern = "^[ \t]*def "
29
- # open("| grep -Ern #{pattern.shellescape} lib") { |grep|
30
- # grep.each_line { |line|
31
- # file, lineno, matched_line = line.split(':', 3)
32
- # # ...
33
- # }
34
- # }
35
- #
36
- # It is the caller's responsibility to encode the string in the right
37
- # encoding for the shell environment where this string is used.
38
- #
39
- # Multibyte characters are treated as multibyte characters, not bytes.
40
- #
41
- # Returns an empty quoted String if +str+ has a length of zero.
42
- def self.shellescape(str)
43
- str = str.to_s
44
-
45
- # An empty argument will be skipped, so return empty quotes.
46
- return "''" if str.empty?
47
-
48
- str = str.dup
49
-
50
- # Treat multibyte characters as is. It is caller's responsibility
51
- # to encode the string in the right encoding for the shell
52
- # environment.
53
- str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/, "\\\\\\1")
54
-
55
- # A LF cannot be escaped with a backslash because a backslash + LF
56
- # combo is regarded as line continuation and simply ignored.
57
- str.gsub!(/\n/, "'\n'")
58
-
59
- return str
60
- end
61
- end
62
- end
63
-
64
- load File.expand_path('../tasks/airbrake.cap', __FILE__)
3
+ load File.expand_path("../tasks/airbrake.cap", __FILE__)
@@ -146,7 +146,8 @@ module Airbrake
146
146
  'ActionController::UnknownHttpMethod',
147
147
  'ActionController::UnknownAction',
148
148
  'AbstractController::ActionNotFound',
149
- 'Mongoid::Errors::DocumentNotFound']
149
+ 'Mongoid::Errors::DocumentNotFound',
150
+ 'ActionController::UnknownFormat']
150
151
 
151
152
  alias_method :secure?, :secure
152
153
  alias_method :use_system_ssl_cert_chain?, :use_system_ssl_cert_chain
@@ -9,6 +9,8 @@ module Airbrake
9
9
  #
10
10
  # Airbrake.configure do |config|
11
11
  # config.api_key = 'my_api_key'
12
+ # #can also set the environment over here
13
+ # config.environment_name = ENV['RACK_ENV'] || "development"
12
14
  # end
13
15
  #
14
16
  # app = Rack::Builder.app do
@@ -0,0 +1,9 @@
1
+ require 'sidekiq'
2
+
3
+ if ::Sidekiq::VERSION >= '3'
4
+ ::Sidekiq.configure_server do |config|
5
+ config.error_handlers << lambda do |exception, context|
6
+ Airbrake.notify_or_ignore(exception, :parameters => context)
7
+ end
8
+ end
9
+ end
@@ -6,9 +6,7 @@ namespace :airbrake do
6
6
  task :test => ['airbrake:log_stdout', :environment] do
7
7
  RAILS_DEFAULT_LOGGER.level = Logger::DEBUG
8
8
 
9
- require 'action_controller/test_process'
10
-
11
- Dir["app/controllers/application*.rb"].each { |file| require(File.expand_path(file)) }
9
+ Dir["app/controllers/application*.rb"].each { |file| require(File.expand_path(file)) }
12
10
 
13
11
  class AirbrakeTestingException < RuntimeError; end
14
12
 
@@ -4,25 +4,26 @@ namespace :airbrake do
4
4
  - Run remotely so we use remote API keys, environment, etc.
5
5
  DESC
6
6
  task :deploy do
7
- on roles(:all) do |host|
8
- rails_env = fetch(:rails_env, "production")
9
- airbrake_env = fetch(:airbrake_env, fetch(:rails_env, "production"))
10
- local_user = ENV['USER'] || ENV['USERNAME']
11
- executable = RUBY_PLATFORM.downcase.include?('mswin') ? fetch(:rake, 'rake.bat') : fetch(:rake, 'bundle exec rake ')
12
- current_revision = capture("cd #{repo_path} && git rev-parse HEAD")
13
- repository = ENV['REPO'] || ENV['REPONAME']
14
-
15
- notify_command = "airbrake:deploy TO=#{airbrake_env} REVISION=#{current_revision} REPO=#{repo_url} USER=#{Airbrake::Capistrano::shellescape(local_user)}"
16
- notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY']
17
- info "Notifying Airbrake of Deploy (#{notify_command})"
18
- result = ""
7
+ # update scm state to get the repository information
8
+ invoke "#{scm}:update"
9
+ on roles(:app) do
19
10
  within release_path do
20
- execute :rake, notify_command, :once => true do |ch, stream, data|
21
- result << data
11
+ # XXX: Invoking deploy:set_rails_env would set :rails_env to proper
12
+ # value, but that would make us depend on capistrano-rails
13
+ with rails_env: fetch(:rails_env, fetch(:stage)) do
14
+ # Compose the command notify_command
15
+ airbrake_env = fetch(:airbrake_env, fetch(:rails_env, fetch(:stage)))
16
+ notify_command = "airbrake:deploy"
17
+ notify_command << " TO=#{airbrake_env}"
18
+ notify_command << " REVISION=#{fetch(:current_revision)} REPO=#{fetch(:repo_url)}"
19
+ notify_command << " USER=#{local_user.strip.shellescape}"
20
+ notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY']
21
+
22
+ info "Notifying Airbrake of Deploy (#{notify_command})"
23
+ execute :rake, notify_command
24
+ info "Airbrake Notification Complete."
22
25
  end
23
26
  end
24
- # TODO: Check if SSL is active on account via result content.
25
- info "Airbrake Notification Complete."
26
27
  end
27
28
  end
28
- end
29
+ end
@@ -80,6 +80,11 @@ module Airbrake
80
80
  hash[key] = "[FILTERED]"
81
81
  elsif value.respond_to?(:to_hash)
82
82
  filter(hash[key])
83
+ elsif value.is_a?(Array)
84
+ hash[key] = value.inject(Array.new) do |result, item|
85
+ item = filter(item) if item.is_a?(Enumerable)
86
+ result.push(item)
87
+ end
83
88
  end
84
89
  end
85
90
  end
@@ -1,3 +1,3 @@
1
1
  module Airbrake
2
- VERSION = "4.0.0".freeze
2
+ VERSION = "4.1.0".freeze
3
3
  end
@@ -1,2 +1 @@
1
- <?xml version="1.0" encoding="UTF-8"?><notice version="2.4"><api-key>myapikey</api-key><notifier><name>Airbrake Notifier</name><version>3.1.16</version><url>https://github.com/airbrake/airbrake</url></notifier><error><class>AirbrakeTestingException</class><message>AirbrakeTestingException:
2
- Testing airbrake via "rake airbrake:test". If you can see this, it works.</message><backtrace><line number="377" file="[GEM_ROOT]/gems/activesupport-4.0.4/lib/active_support/callbacks.rb" method="_run__860778729963979009__process_action__callbacks"/><line number="80" file="[GEM_ROOT]/gems/activesupport-4.0.4/lib/active_support/callbacks.rb" method="run_callbacks"/><line number="17" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/abstract_controller/callbacks.rb" method="process_action"/><line number="29" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_controller/metal/rescue.rb" method="process_action"/><line number="31" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_controller/metal/instrumentation.rb" method="block in process_action"/><line number="159" file="[GEM_ROOT]/gems/activesupport-4.0.4/lib/active_support/notifications.rb" method="block in instrument"/><line number="20" file="[GEM_ROOT]/gems/activesupport-4.0.4/lib/active_support/notifications/instrumenter.rb" method="instrument"/><line number="159" file="[GEM_ROOT]/gems/activesupport-4.0.4/lib/active_support/notifications.rb" method="instrument"/><line number="30" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_controller/metal/instrumentation.rb" method="process_action"/><line number="250" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_controller/metal/params_wrapper.rb" method="process_action"/><line number="136" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/abstract_controller/base.rb" method="process"/><line number="44" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/abstract_controller/rendering.rb" method="process"/><line number="195" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_controller/metal.rb" method="dispatch"/><line number="13" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_controller/metal/rack_delegation.rb" method="dispatch"/><line number="231" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_controller/metal.rb" method="block in action"/><line number="80" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_dispatch/routing/route_set.rb" method="call"/><line number="80" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_dispatch/routing/route_set.rb" method="dispatch"/><line number="48" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_dispatch/routing/route_set.rb" method="call"/><line number="71" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_dispatch/journey/router.rb" method="block in call"/><line number="59" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_dispatch/journey/router.rb" method="each"/><line number="59" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_dispatch/journey/router.rb" method="call"/><line number="674" file="[GEM_ROOT]/gems/actionpack-4.0.4/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.4/lib/action_dispatch/middleware/params_parser.rb" method="call"/><line number="241" file="[GEM_ROOT]/gems/actionpack-4.0.4/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.4/lib/action_dispatch/middleware/cookies.rb" method="call"/><line number="29" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_dispatch/middleware/callbacks.rb" method="block in call"/><line number="373" file="[GEM_ROOT]/gems/activesupport-4.0.4/lib/active_support/callbacks.rb" method="_run__4065767142482523156__call__callbacks"/><line number="80" file="[GEM_ROOT]/gems/activesupport-4.0.4/lib/active_support/callbacks.rb" method="run_callbacks"/><line number="27" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_dispatch/middleware/callbacks.rb" method="call"/><line number="76" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_dispatch/middleware/remote_ip.rb" method="call"/><line number="38" file="[GEM_ROOT]/gems/railties-4.0.4/lib/rails/rack/logger.rb" method="call_app"/><line number="20" file="[GEM_ROOT]/gems/railties-4.0.4/lib/rails/rack/logger.rb" method="block in call"/><line number="68" file="[GEM_ROOT]/gems/activesupport-4.0.4/lib/active_support/tagged_logging.rb" method="block in tagged"/><line number="26" file="[GEM_ROOT]/gems/activesupport-4.0.4/lib/active_support/tagged_logging.rb" method="tagged"/><line number="68" file="[GEM_ROOT]/gems/activesupport-4.0.4/lib/active_support/tagged_logging.rb" method="tagged"/><line number="20" file="[GEM_ROOT]/gems/railties-4.0.4/lib/rails/rack/logger.rb" method="call"/><line number="21" file="[GEM_ROOT]/gems/actionpack-4.0.4/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.4/lib/active_support/cache/strategy/local_cache.rb" method="call"/><line number="64" file="[GEM_ROOT]/gems/actionpack-4.0.4/lib/action_dispatch/middleware/static.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.4/lib/rails/engine.rb" method="call"/><line number="97" file="[GEM_ROOT]/gems/railties-4.0.4/lib/rails/application.rb" method="call"/><line number="240" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/task.rb" method="call"/><line number="240" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/task.rb" method="block in execute"/><line number="235" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/task.rb" method="each"/><line number="235" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/task.rb" method="execute"/><line number="179" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/task.rb" method="block in invoke_with_call_chain"/><line number="211" file="/Users/alifaiz/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/monitor.rb" method="mon_synchronize"/><line number="172" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/task.rb" method="invoke_with_call_chain"/><line number="165" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/task.rb" method="invoke"/><line number="150" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/application.rb" method="invoke_task"/><line number="106" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/application.rb" method="block (2 levels) in top_level"/><line number="106" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/application.rb" method="each"/><line number="106" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/application.rb" method="block in top_level"/><line number="115" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/application.rb" method="run_with_threads"/><line number="100" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/application.rb" method="top_level"/><line number="78" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/application.rb" method="block in run"/><line number="176" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/application.rb" method="standard_exception_handling"/><line number="75" file="[GEM_ROOT]/gems/rake-10.2.2/lib/rake/application.rb" method="run"/><line number="33" file="[GEM_ROOT]/gems/rake-10.2.2/bin/rake" method="&lt;top (required)&gt;"/><line number="23" file="[GEM_ROOT]/bin/rake" method="load"/><line number="23" file="[GEM_ROOT]/bin/rake" method="&lt;main&gt;"/><line number="15" file="[GEM_ROOT]/bin/ruby_executable_hooks" method="eval"/><line number="15" file="[GEM_ROOT]/bin/ruby_executable_hooks" method="&lt;main&gt;"/></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", "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">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="ORIGINAL_FULLPATH">/verify</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">false</var><var key="action_dispatch.show_detailed_exceptions">true</var><var key="ROUTES_2160658760_SCRIPT_NAME"></var><var key="action_dispatch.request_id">5d547c87-a383-4a63-9c0c-cfcdd16ff368</var><var key="action_dispatch.remote_ip"></var><var key="action_dispatch.request.path_parameters"><var key="action">verify</var><var key="controller">application</var></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>/Users/alifaiz/Work/Exceptional/airbrake-gem/tmp/rails_root</project-root><environment-name>test</environment-name><hostname>ali-mb.local</hostname></server-environment><framework>Rails: 4.0.4</framework></notice>
1
+ <?xml version="1.0" encoding="UTF-8"?><notice version="2.4"><api-key>myapikey</api-key><notifier><name>Airbrake Notifier</name><version>4.0.0</version><url>https://github.com/airbrake/airbrake</url></notifier><error><class>RuntimeError</class><message>RuntimeError: some message</message><backtrace><line number="5" file="[PROJECT_ROOT]/app/controllers/test_controller.rb" method="index"/><line number="4" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_controller/metal/implicit_render.rb" method="send_action"/><line number="150" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/abstract_controller/base.rb" method="process_action"/><line number="11" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_controller/metal/rendering.rb" method="process_action"/><line number="18" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/abstract_controller/callbacks.rb" method="block in process_action"/><line number="436" file="[GEM_ROOT]/gems/activesupport-3.0.20/lib/active_support/callbacks.rb" method="_run__3844756527684457203__process_action__1951419777138106973__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="47" file="[GEM_ROOT]/gems/actionpack-3.0.20/lib/action_dispatch/middleware/show_exceptions.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="13" file="[GEM_ROOT]/gems/rack-1.2.8/lib/rack/lock.rb" method="synchronize"/><line number="13" file="[GEM_ROOT]/gems/rack-1.2.8/lib/rack/lock.rb" method="call"/><line number="168" file="[GEM_ROOT]/gems/railties-3.0.20/lib/rails/application.rb" method="call"/><line number="77" file="[GEM_ROOT]/gems/railties-3.0.20/lib/rails/application.rb" method="method_missing"/><line number="4" file="request.rb" method="&lt;top (required)&gt;"/><line number="48" file="[GEM_ROOT]/gems/railties-3.0.20/lib/rails/commands/runner.rb" method="eval"/><line number="48" file="[GEM_ROOT]/gems/railties-3.0.20/lib/rails/commands/runner.rb" method="&lt;top (required)&gt;"/><line number="39" file="[GEM_ROOT]/gems/railties-3.0.20/lib/rails/commands.rb" method="require"/><line number="39" file="[GEM_ROOT]/gems/railties-3.0.20/lib/rails/commands.rb" method="&lt;top (required)&gt;"/><line number="6" file="script/rails" method="require"/><line number="6" file="script/rails" method="&lt;main&gt;"/></backtrace></error><request><url>http://example.com:123/test/index?param=value</url><component>test</component><action>index</action><params><var key="param">value</var><var key="controller">test</var><var key="action">index</var></params><cgi-data><var key="rack.version">["1", "1"]</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">example.com</var><var key="SERVER_PORT">123</var><var key="QUERY_STRING">param=value</var><var key="PATH_INFO">/test/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="action_dispatch.parameter_filter">["password"]</var><var key="action_dispatch.show_exceptions">true</var><var key="action_dispatch.remote_ip"></var><var key="action_dispatch.request.path_parameters"><var key="controller">test</var><var key="action">index</var></var><var key="action_dispatch.request.content_type"></var><var key="action_dispatch.request.request_parameters"></var><var key="rack.request.query_string">param=value</var><var key="rack.request.query_hash"><var key="param">value</var></var><var key="action_dispatch.request.query_parameters"><var key="param">value</var></var><var key="action_dispatch.request.parameters"><var key="param">value</var><var key="controller">test</var><var key="action">index</var></var><var key="action_dispatch.request.formats">["text/html"]</var></cgi-data></request><server-environment><project-root>/Users/shifi/work/rackspace/code/airbrake/tmp/rails_root</project-root><environment-name>production</environment-name><hostname>shifi-mac.lan</hostname></server-environment><framework>Rails: 3.0.20</framework></notice>
@@ -33,6 +33,7 @@ class CapistranoTest < Test::Unit::TestCase
33
33
  @configuration.find_and_execute_task('airbrake:deploy')
34
34
 
35
35
  assert io.string.include?('** Notifying Airbrake of Deploy')
36
+ assert io.string.include?('RAILS_ENV=production')
36
37
  assert io.string.include?('** Airbrake Notification Complete')
37
38
  assert io.string.include?(%q[D\'Angelo\ \"D\"\ Barksdale])
38
39
  end
@@ -256,6 +256,12 @@ class NotifierTest < Test::Unit::TestCase
256
256
  @hash = Airbrake.build_lookup_hash_for(@exception)
257
257
  assert_equal "NotifierTest::OriginalException", @hash[:error_class]
258
258
  end
259
+
260
+ should "keep exception if #original_exception is nil" do
261
+ @exception.stubs(:original_exception).returns(nil)
262
+ @hash = Airbrake.build_lookup_hash_for(@exception)
263
+ assert_equal "BacktracedException", @hash[:error_class]
264
+ end
259
265
  end
260
266
 
261
267
  context "when an exception that provides #continued_exception is raised" do
@@ -271,6 +277,12 @@ class NotifierTest < Test::Unit::TestCase
271
277
  @hash = Airbrake.build_lookup_hash_for(@exception)
272
278
  assert_equal "NotifierTest::ContinuedException", @hash[:error_class]
273
279
  end
280
+
281
+ should "keep exception if #continued_exception is nil" do
282
+ @exception.stubs(:continued_exception).returns(nil)
283
+ @hash = Airbrake.build_lookup_hash_for(@exception)
284
+ assert_equal "BacktracedException", @hash[:error_class]
285
+ end
274
286
  end
275
287
  end
276
288
  end
@@ -29,20 +29,27 @@ class ParamsCleanerTest < Test::Unit::TestCase
29
29
  end
30
30
 
31
31
  def assert_filters_hash(attribute)
32
- filters = ["abc", :def]
33
- original = { 'abc' => "123", 'def' => "456", 'ghi' => "789", 'nested' => { 'abc' => '100' },
34
- 'something_with_abc' => 'match the entire string'}
35
- filtered = { 'abc' => "[FILTERED]",
36
- 'def' => "[FILTERED]",
37
- 'something_with_abc' => "match the entire string",
38
- 'ghi' => "789",
39
- 'nested' => { 'abc' => '[FILTERED]' } }
32
+ filters = ['abc', :def]
33
+ original = {
34
+ 'abc' => '123',
35
+ 'def' => '456',
36
+ 'ghi' => '789',
37
+ 'something_with_abc' => 'match the entire string',
38
+ 'nested_hash' => { 'abc' => '100', 'ghi' => '789' },
39
+ 'nested_array' => [{ 'abc' => '100' }, { 'ghi' => '789' }, 'xyz']
40
+ }
41
+ filtered = {
42
+ 'abc' => '[FILTERED]',
43
+ 'def' => '[FILTERED]',
44
+ 'ghi' => '789',
45
+ 'something_with_abc' => 'match the entire string',
46
+ 'nested_hash' => { 'abc' => '[FILTERED]', 'ghi' => '789' },
47
+ 'nested_array' => [{ 'abc' => '[FILTERED]' }, { 'ghi' => '789' }, 'xyz']
48
+ }
40
49
 
41
- clean_params = clean(:params_filters => filters,
42
- attribute => original)
50
+ clean_params = clean(:params_filters => filters, attribute => original)
43
51
 
44
- assert_equal(filtered,
45
- clean_params.send(attribute))
52
+ assert_equal(filtered, clean_params.send(attribute))
46
53
  end
47
54
 
48
55
  should "should always remove a Rails application's secret token" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airbrake
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airbrake
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-27 00:00:00.000000000 Z
11
+ date: 2014-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -357,6 +357,7 @@ files:
357
357
  - lib/airbrake/response.rb
358
358
  - lib/airbrake/sender.rb
359
359
  - lib/airbrake/shared_tasks.rb
360
+ - lib/airbrake/sidekiq.rb
360
361
  - lib/airbrake/sinatra.rb
361
362
  - lib/airbrake/tasks.rb
362
363
  - lib/airbrake/tasks/airbrake.cap
@@ -393,7 +394,8 @@ files:
393
394
  - test/support/response_shim.xml
394
395
  - test/user_informer_test.rb
395
396
  homepage: http://www.airbrake.io
396
- licenses: []
397
+ licenses:
398
+ - MIT
397
399
  metadata: {}
398
400
  post_install_message:
399
401
  rdoc_options: []
@@ -411,7 +413,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
411
413
  version: '0'
412
414
  requirements: []
413
415
  rubyforge_project:
414
- rubygems_version: 2.2.0
416
+ rubygems_version: 2.4.1
415
417
  signing_key:
416
418
  specification_version: 4
417
419
  summary: Send your application errors to our hosted service and reclaim your inbox.