bugsnag 2.8.6 → 2.8.7
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 +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +16 -0
- data/VERSION +1 -1
- data/bugsnag.gemspec +1 -1
- data/lib/bugsnag/configuration.rb +4 -2
- data/lib/bugsnag/delivery/synchronous.rb +2 -1
- data/lib/bugsnag/mailman.rb +1 -0
- data/lib/bugsnag/middleware/rack_request.rb +0 -4
- data/lib/bugsnag/notification.rb +1 -1
- data/lib/bugsnag/rack.rb +2 -0
- data/lib/bugsnag/rails.rb +2 -0
- data/lib/bugsnag/railtie.rb +11 -4
- data/lib/bugsnag/rake.rb +1 -0
- data/lib/bugsnag/resque.rb +2 -0
- data/lib/bugsnag/sidekiq.rb +1 -0
- data/spec/notification_spec.rb +32 -0
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 067814066dcb230ce23d76c6a2c6aaac1f558d6a
|
4
|
+
data.tar.gz: ca9cdab9e2a56282adae7ad665448cb7a56fbe3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 359bf4b141709e8eaa9c69a703c5572970349a536f4b91ca0a62e14ad7e250f9979a99f9f8904ab6f1c144909df40d741886f421b9a77bb1a7053a65d4c389a7
|
7
|
+
data.tar.gz: 1b4490466b23031df3577d009c4a0482d10d702d85394d501f90577378f99316e89d3ca9304336df411a680cb245d37b0157f3f3014c89aa6324366c70bdfccc
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
2.8.7
|
5
|
+
-----
|
6
|
+
|
7
|
+
- Fix for old rails 3.2 not having runner defined in the railtie
|
8
|
+
- Support for rails API
|
9
|
+
- Added support for ca_file for dealing with SSL issues
|
10
|
+
- Threadsafe ignore_classes
|
11
|
+
- Add app type
|
12
|
+
- Dont send cookies in their own tab
|
13
|
+
|
4
14
|
2.8.6
|
5
15
|
-----
|
6
16
|
|
data/README.md
CHANGED
@@ -115,6 +115,22 @@ class MyController < ApplicationController
|
|
115
115
|
end
|
116
116
|
```
|
117
117
|
|
118
|
+
### Rails API Apps
|
119
|
+
|
120
|
+
If you are building an API using the [rails-api](https://github.com/rails-api/rails-api) gem, your controllers will inherit from `ActionController::API` instead of `ActionController::Base`.
|
121
|
+
|
122
|
+
In this case, the `before_bugsnag_notify` filter will not be automatically available in your controllers. In order to use it, you will need to include the module `Bugsnag::Rails::ControllerMethods`.
|
123
|
+
|
124
|
+
```ruby
|
125
|
+
class ApplicationController < ActionController::API
|
126
|
+
|
127
|
+
# Include module which defines the before_bugsnag_notify filter
|
128
|
+
include Bugsnag::Rails::ControllerMethods
|
129
|
+
|
130
|
+
# Other code here
|
131
|
+
end
|
132
|
+
```
|
133
|
+
|
118
134
|
### Other Ruby Apps
|
119
135
|
|
120
136
|
In other ruby apps, you can provide lambda functions to execute before any `Bugsnag.notify` calls as follows. Don't forget to clear the callbacks at the end of each request or session. In Rack applications like Sinatra, this is automatically done for you.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.8.
|
1
|
+
2.8.7
|
data/bugsnag.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.homepage = "http://github.com/bugsnag/bugsnag-ruby"
|
11
11
|
s.licenses = ["MIT"]
|
12
12
|
|
13
|
-
s.files = `git ls-files`.split("\n")
|
13
|
+
s.files = `git ls-files`.split("\n").reject {|file| file.start_with? "example/"}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
16
16
|
"README.md"
|
@@ -10,6 +10,7 @@ module Bugsnag
|
|
10
10
|
attr_accessor :notify_release_stages
|
11
11
|
attr_accessor :auto_notify
|
12
12
|
attr_accessor :use_ssl
|
13
|
+
attr_accessor :ca_file
|
13
14
|
attr_accessor :send_environment
|
14
15
|
attr_accessor :send_code
|
15
16
|
attr_accessor :project_root
|
@@ -30,7 +31,6 @@ module Bugsnag
|
|
30
31
|
attr_accessor :timeout
|
31
32
|
attr_accessor :hostname
|
32
33
|
attr_accessor :delivery_method
|
33
|
-
|
34
34
|
attr_writer :ignore_classes
|
35
35
|
|
36
36
|
THREAD_LOCAL_NAME = "bugsnag_req_data"
|
@@ -62,6 +62,8 @@ module Bugsnag
|
|
62
62
|
DEFAULT_DELIVERY_METHOD = :thread_queue
|
63
63
|
|
64
64
|
def initialize
|
65
|
+
@mutex = Mutex.new
|
66
|
+
|
65
67
|
# Set up the defaults
|
66
68
|
self.auto_notify = true
|
67
69
|
self.use_ssl = true
|
@@ -90,7 +92,7 @@ module Bugsnag
|
|
90
92
|
|
91
93
|
# Accept both String and Class instances as an ignored class
|
92
94
|
def ignore_classes
|
93
|
-
@ignore_classes.map! { |klass| klass.is_a?(Class) ? klass.name : klass }
|
95
|
+
@mutex.synchronize { @ignore_classes.map! { |klass| klass.is_a?(Class) ? klass.name : klass } }
|
94
96
|
end
|
95
97
|
|
96
98
|
def should_notify?
|
@@ -32,6 +32,7 @@ module Bugsnag
|
|
32
32
|
http.use_ssl = true
|
33
33
|
# the default in 1.9+, but required for 1.8
|
34
34
|
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
35
|
+
http.ca_file = configuration.ca_file if configuration.ca_file
|
35
36
|
end
|
36
37
|
|
37
38
|
request = Net::HTTP::Post.new(path(uri), HEADERS)
|
@@ -47,4 +48,4 @@ module Bugsnag
|
|
47
48
|
end
|
48
49
|
end
|
49
50
|
|
50
|
-
Bugsnag::Delivery.register(:synchronous, Bugsnag::Delivery::Synchronous)
|
51
|
+
Bugsnag::Delivery.register(:synchronous, Bugsnag::Delivery::Synchronous)
|
data/lib/bugsnag/mailman.rb
CHANGED
data/lib/bugsnag/notification.rb
CHANGED
@@ -213,7 +213,7 @@ module Bugsnag
|
|
213
213
|
end
|
214
214
|
|
215
215
|
# make meta_data available to public middleware
|
216
|
-
@meta_data =
|
216
|
+
@meta_data = generate_meta_data(@exceptions, @overrides)
|
217
217
|
|
218
218
|
# Run the middleware here (including Bugsnag::Middleware::Callbacks)
|
219
219
|
# at the end of the middleware stack, execute the actual notification delivery
|
data/lib/bugsnag/rack.rb
CHANGED
@@ -20,6 +20,8 @@ module Bugsnag
|
|
20
20
|
# Hook up rack-based notification middlewares
|
21
21
|
config.middleware.insert_before([Bugsnag::Middleware::Rails3Request,Bugsnag::Middleware::Callbacks], Bugsnag::Middleware::RackRequest) if defined?(::Rack)
|
22
22
|
config.middleware.insert_before(Bugsnag::Middleware::Callbacks, Bugsnag::Middleware::WardenUser) if defined?(Warden)
|
23
|
+
|
24
|
+
Bugsnag.configuration.app_type ||= "rack"
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
data/lib/bugsnag/rails.rb
CHANGED
@@ -31,6 +31,8 @@ module Bugsnag
|
|
31
31
|
config_file = File.join(rails_root, "config", "bugsnag.yml")
|
32
32
|
config = YAML.load_file(config_file) if File.exists?(config_file)
|
33
33
|
Bugsnag.configure(config[rails_env] ? config[rails_env] : config) if config
|
34
|
+
|
35
|
+
Bugsnag.configuration.app_type = "rails"
|
34
36
|
end
|
35
37
|
|
36
38
|
def self.rails_logger
|
data/lib/bugsnag/railtie.rb
CHANGED
@@ -13,10 +13,12 @@ module Bugsnag
|
|
13
13
|
end
|
14
14
|
|
15
15
|
# send notifications if a command fails in a 'rails runner' call
|
16
|
-
runner
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
if self.respond_to? :runner
|
17
|
+
runner do
|
18
|
+
at_exit do
|
19
|
+
if $!
|
20
|
+
Bugsnag.auto_notify($!)
|
21
|
+
end
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
@@ -39,10 +41,15 @@ module Bugsnag
|
|
39
41
|
require "bugsnag/rails/controller_methods"
|
40
42
|
::ActionController::Base.send(:include, Bugsnag::Rails::ControllerMethods)
|
41
43
|
end
|
44
|
+
if defined?(ActionController::API)
|
45
|
+
ActionController::API.send(:include, Bugsnag::Rails::ControllerMethods)
|
46
|
+
end
|
42
47
|
if defined?(ActiveRecord::Base)
|
43
48
|
require "bugsnag/rails/active_record_rescue"
|
44
49
|
ActiveRecord::Base.send(:include, Bugsnag::Rails::ActiveRecordRescue)
|
45
50
|
end
|
51
|
+
|
52
|
+
Bugsnag.configuration.app_type = "rails"
|
46
53
|
end
|
47
54
|
|
48
55
|
# Configure params_filters after initialization, so that rails initializers
|
data/lib/bugsnag/rake.rb
CHANGED
@@ -5,6 +5,7 @@ Rake::TaskManager.record_task_metadata = true
|
|
5
5
|
class Rake::Task
|
6
6
|
|
7
7
|
def execute_with_bugsnag(args=nil)
|
8
|
+
Bugsnag.configuration.app_type = "rake"
|
8
9
|
old_task = Bugsnag.configuration.request_data[:bugsnag_running_task]
|
9
10
|
Bugsnag.set_request_data :bugsnag_running_task, self
|
10
11
|
|
data/lib/bugsnag/resque.rb
CHANGED
data/lib/bugsnag/sidekiq.rb
CHANGED
data/spec/notification_spec.rb
CHANGED
@@ -469,6 +469,38 @@ describe Bugsnag::Notification do
|
|
469
469
|
}
|
470
470
|
end
|
471
471
|
|
472
|
+
it "filters params from all payload hashes if they are added to params_filters as regex" do
|
473
|
+
|
474
|
+
Bugsnag.configuration.params_filters << /other_data/
|
475
|
+
Bugsnag.notify(BugsnagTestException.new("It crashed"), {:request => {:params => {:password => "1234", :other_password => "123456", :other_data => "123456"}}})
|
476
|
+
|
477
|
+
expect(Bugsnag).to have_sent_notification{ |payload|
|
478
|
+
event = get_event_from_payload(payload)
|
479
|
+
expect(event["metaData"]).not_to be_nil
|
480
|
+
expect(event["metaData"]["request"]).not_to be_nil
|
481
|
+
expect(event["metaData"]["request"]["params"]).not_to be_nil
|
482
|
+
expect(event["metaData"]["request"]["params"]["password"]).to eq("[FILTERED]")
|
483
|
+
expect(event["metaData"]["request"]["params"]["other_password"]).to eq("[FILTERED]")
|
484
|
+
expect(event["metaData"]["request"]["params"]["other_data"]).to eq("[FILTERED]")
|
485
|
+
}
|
486
|
+
end
|
487
|
+
|
488
|
+
it "filters params from all payload hashes if they are added to params_filters as partial regex" do
|
489
|
+
|
490
|
+
Bugsnag.configuration.params_filters << /r_data/
|
491
|
+
Bugsnag.notify(BugsnagTestException.new("It crashed"), {:request => {:params => {:password => "1234", :other_password => "123456", :other_data => "123456"}}})
|
492
|
+
|
493
|
+
expect(Bugsnag).to have_sent_notification{ |payload|
|
494
|
+
event = get_event_from_payload(payload)
|
495
|
+
expect(event["metaData"]).not_to be_nil
|
496
|
+
expect(event["metaData"]["request"]).not_to be_nil
|
497
|
+
expect(event["metaData"]["request"]["params"]).not_to be_nil
|
498
|
+
expect(event["metaData"]["request"]["params"]["password"]).to eq("[FILTERED]")
|
499
|
+
expect(event["metaData"]["request"]["params"]["other_password"]).to eq("[FILTERED]")
|
500
|
+
expect(event["metaData"]["request"]["params"]["other_data"]).to eq("[FILTERED]")
|
501
|
+
}
|
502
|
+
end
|
503
|
+
|
472
504
|
it "does not filter params from payload hashes if their values are nil" do
|
473
505
|
Bugsnag.notify(BugsnagTestException.new("It crashed"), {:request => {:params => {:nil_param => nil}}})
|
474
506
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bugsnag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.8.
|
4
|
+
version: 2.8.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -190,4 +190,3 @@ signing_key:
|
|
190
190
|
specification_version: 4
|
191
191
|
summary: Ruby notifier for bugsnag.com
|
192
192
|
test_files: []
|
193
|
-
has_rdoc:
|