raygun4ruby 2.4.1 → 2.5.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 +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +23 -4
- data/lib/raygun/breadcrumbs/store.rb +8 -0
- data/lib/raygun/client.rb +14 -9
- data/lib/raygun/configuration.rb +2 -2
- data/lib/raygun/version.rb +1 -1
- data/test/unit/client_test.rb +26 -16
- data/test/unit/configuration_test.rb +16 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b5dc6fa5ba97eb5e725e33957adb0938d497c04
|
4
|
+
data.tar.gz: d8251293800014da04f65d59a7de524310bf0575
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7e838b56806115af7f151908b8323c106677de99764b4fe0a30939cc15e9a529f34193643c3173d02ccd65c60b8492cd96b934f317f3b44f46827463d86a8b1
|
7
|
+
data.tar.gz: 362c3b34876de277572b93e7c4017adee6222839a3e1c711c7cf20181438501d302446d95735c4d8f61b719ae2dbfdc93428ef4ce61276158a6505e0d062854a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 2.5.0 (04/10/2017)
|
2
|
+
|
3
|
+
Features
|
4
|
+
- Teach tags configuration how to handle a proc to allow dynamically settings tags ([#127](https://github.com/MindscapeHQ/raygun4ruby/pull/127))
|
5
|
+
|
6
|
+
Bugfixes
|
7
|
+
- Fix crash when recording breadcrumb with uninitialized store ([#126](https://github.com/MindscapeHQ/raygun4ruby/pull/126))
|
8
|
+
- Make raw data handling more robus and fix in unicorn ([#125](https://github.com/MindscapeHQ/raygun4ruby/pull/125))
|
9
|
+
- Backwards compatible affected_user_identifier_methods ([#120](https://github.com/MindscapeHQ/raygun4ruby/pull/120))
|
10
|
+
|
1
11
|
## 2.4.1 (29/08/2017)
|
2
12
|
|
3
13
|
Bugfixes
|
data/README.md
CHANGED
@@ -138,6 +138,7 @@ end
|
|
138
138
|
|
139
139
|
If you are using Sinatra or another rack framework you will need to include the Breadcrumbs middleware, this is used for storing the breadcrumbs during a request
|
140
140
|
`use Raygun::Middleware::BreadcrumbsStoreInitializer`
|
141
|
+
(this must be before you `use` the `Raygun::Middleware::RackExceptionInterceptor`)
|
141
142
|
|
142
143
|
If you are using a non web based Ruby application you will have to call `Raygun::Breadcrumbs::Store.initialize` during your applications boot process. The store is per thread, but I have not tested it in a multi threaded application.
|
143
144
|
|
@@ -192,13 +193,11 @@ end
|
|
192
193
|
Custom data can be added to `track_exception` by passing a custom_data key in the second parameter hash.
|
193
194
|
|
194
195
|
```ruby
|
195
|
-
|
196
196
|
begin
|
197
197
|
# more lovely code
|
198
198
|
rescue Exception => e
|
199
199
|
Raygun.track_exception(e, custom_data: {my: 'custom data', goes: 'here'})
|
200
200
|
end
|
201
|
-
|
202
201
|
```
|
203
202
|
|
204
203
|
Custom data can also be specified globally either by setting `config.custom_data` to a hash
|
@@ -320,8 +319,17 @@ end
|
|
320
319
|
|
321
320
|
### Tags
|
322
321
|
|
323
|
-
|
324
|
-
|
322
|
+
Tags can be added to `track_exception` by passing a tags key in the second parameter hash.
|
323
|
+
|
324
|
+
```ruby
|
325
|
+
begin
|
326
|
+
# more lovely code
|
327
|
+
rescue Exception => e
|
328
|
+
Raygun.track_exception(e, tags: ['my', 'tags', 'go here')
|
329
|
+
end
|
330
|
+
```
|
331
|
+
|
332
|
+
Tags can also be specified globally either by setting `config.custom_data` to an array
|
325
333
|
|
326
334
|
```ruby
|
327
335
|
Raygun.setup do |config|
|
@@ -329,6 +337,17 @@ Raygun.setup do |config|
|
|
329
337
|
end
|
330
338
|
```
|
331
339
|
|
340
|
+
or to a proc, which gets passed the exception and environment hash. This proc _must_ return an array of strings
|
341
|
+
|
342
|
+
```ruby
|
343
|
+
Raygun.setup do |config|
|
344
|
+
config.api_key = "YOUR_RAYGUN_API_KEY"
|
345
|
+
config.tags do |e, env|
|
346
|
+
[env["SERVER_NAME"]]
|
347
|
+
end
|
348
|
+
end
|
349
|
+
```
|
350
|
+
|
332
351
|
### Resque Error Tracking
|
333
352
|
|
334
353
|
Raygun4Ruby also includes a Resque failure backend. You should include it inside your Resque initializer (usually something like `config/initializers/load_resque.rb`)
|
@@ -50,6 +50,14 @@ module Raygun
|
|
50
50
|
private
|
51
51
|
|
52
52
|
def self.should_record?(crumb)
|
53
|
+
if stored.nil?
|
54
|
+
if Raygun.configuration.debug
|
55
|
+
Raygun.log('[Raygun.breadcrumbs] store is uninitialized while breadcrumb is being recorded, discarding breadcrumb')
|
56
|
+
end
|
57
|
+
|
58
|
+
return false
|
59
|
+
end
|
60
|
+
|
53
61
|
levels = Raygun::Breadcrumbs::BREADCRUMB_LEVELS
|
54
62
|
|
55
63
|
active_level = levels.index(Raygun.configuration.breadcrumb_level)
|
data/lib/raygun/client.rb
CHANGED
@@ -132,20 +132,18 @@ module Raygun
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def raw_data(rack_env)
|
135
|
+
request = Rack::Request.new(rack_env)
|
136
|
+
|
135
137
|
return unless Raygun.configuration.record_raw_data
|
138
|
+
return if request.get?
|
136
139
|
|
137
|
-
request = Rack::Request.new(rack_env)
|
138
140
|
input = rack_env['rack.input']
|
139
|
-
return if request.get?
|
140
141
|
|
141
|
-
|
142
|
-
# something like the Puma::NullIO buffer which is missing methods
|
143
|
-
if input && input.size && input.respond_to?(:pos) && !request.form_data?
|
144
|
-
current_position = input.pos
|
142
|
+
if input && !request.form_data?
|
145
143
|
input.rewind
|
146
144
|
|
147
|
-
body =
|
148
|
-
input.
|
145
|
+
body = input.read(4096) || ''
|
146
|
+
input.rewind
|
149
147
|
|
150
148
|
body
|
151
149
|
else
|
@@ -175,6 +173,13 @@ module Raygun
|
|
175
173
|
tags << rack_env
|
176
174
|
end
|
177
175
|
|
176
|
+
configuration_tags = []
|
177
|
+
if Raygun.configuration.tags.is_a?(Proc)
|
178
|
+
configuration_tags = Raygun.configuration.tags.call(exception_instance, env)
|
179
|
+
else
|
180
|
+
configuration_tags = Raygun.configuration.tags
|
181
|
+
end
|
182
|
+
|
178
183
|
grouping_key = env.delete(:grouping_key)
|
179
184
|
|
180
185
|
configuration_custom_data = Raygun.configuration.custom_data
|
@@ -190,7 +195,7 @@ module Raygun
|
|
190
195
|
client: client_details,
|
191
196
|
error: error_details(exception_instance),
|
192
197
|
userCustomData: exception_custom_data.merge(custom_data).merge(configured_custom_data),
|
193
|
-
tags:
|
198
|
+
tags: configuration_tags.concat(tags).compact.uniq,
|
194
199
|
request: request_information(env),
|
195
200
|
environment: {
|
196
201
|
utcOffset: Time.now.utc_offset / 3600
|
data/lib/raygun/configuration.rb
CHANGED
@@ -35,7 +35,7 @@ module Raygun
|
|
35
35
|
proc_config_option :custom_data
|
36
36
|
|
37
37
|
# Tags to send with each exception
|
38
|
-
|
38
|
+
proc_config_option :tags
|
39
39
|
|
40
40
|
# Logger to use when we find an exception :)
|
41
41
|
config_option :logger
|
@@ -163,7 +163,7 @@ module Raygun
|
|
163
163
|
|
164
164
|
def affected_user_identifier_methods
|
165
165
|
Raygun.deprecation_warning("Please note: You should now user config.affected_user_method_mapping.Identifier instead of config.affected_user_identifier_methods")
|
166
|
-
read_value(:
|
166
|
+
read_value(:affected_user_mapping)[:identifier]
|
167
167
|
end
|
168
168
|
|
169
169
|
private
|
data/lib/raygun/version.rb
CHANGED
data/test/unit/client_test.rb
CHANGED
@@ -36,6 +36,14 @@ class ClientTest < Raygun::UnitTest
|
|
36
36
|
ENV['TZ'] = 'UTC-13'
|
37
37
|
end
|
38
38
|
|
39
|
+
def test_record_breadcrumb_does_not_crash_without_initialized_store
|
40
|
+
Raygun.record_breadcrumb(
|
41
|
+
message: 'aliens',
|
42
|
+
category: 'exceptions',
|
43
|
+
level: :info
|
44
|
+
)
|
45
|
+
end
|
46
|
+
|
39
47
|
def test_api_key_required_message
|
40
48
|
Raygun.configuration.api_key = nil
|
41
49
|
|
@@ -139,6 +147,23 @@ class ClientTest < Raygun::UnitTest
|
|
139
147
|
assert_equal expected_tags, @client.send(:build_payload_hash, test_exception, test_env)[:details][:tags]
|
140
148
|
end
|
141
149
|
|
150
|
+
def test_tags_with_proc
|
151
|
+
configuration_tags = %w{bar}
|
152
|
+
explicit_env_tags = %w{one two three four}
|
153
|
+
rack_env_tag = %w{test}
|
154
|
+
|
155
|
+
Raygun.setup do |config|
|
156
|
+
config.tags = ->(exception, env) {
|
157
|
+
[env[:foo]]
|
158
|
+
}
|
159
|
+
end
|
160
|
+
|
161
|
+
test_env = { tags: explicit_env_tags, foo: 'bar' }
|
162
|
+
expected_tags = configuration_tags + explicit_env_tags + rack_env_tag
|
163
|
+
|
164
|
+
assert_equal expected_tags, @client.send(:build_payload_hash, test_exception, test_env)[:details][:tags]
|
165
|
+
end
|
166
|
+
|
142
167
|
def test_hostname
|
143
168
|
assert_equal Socket.gethostname, @client.send(:hostname)
|
144
169
|
end
|
@@ -656,21 +681,6 @@ class ClientTest < Raygun::UnitTest
|
|
656
681
|
assert breadcrumbs[0].is_a? Hash
|
657
682
|
end
|
658
683
|
|
659
|
-
def test_raw_data_rewinds_and_restores_correctly
|
660
|
-
buffer = StringIO.new('123456789')
|
661
|
-
rack_env = {
|
662
|
-
REQUEST_METHOD: 'POST',
|
663
|
-
'rack.input' => buffer
|
664
|
-
}
|
665
|
-
|
666
|
-
buffer.seek(2)
|
667
|
-
|
668
|
-
raw_data = @client.send(:raw_data, rack_env)
|
669
|
-
|
670
|
-
assert_equal '123456789', raw_data
|
671
|
-
assert_equal buffer.pos, 2
|
672
|
-
end
|
673
|
-
|
674
684
|
def test_raw_data_does_not_crash_on_buffer_without_pos
|
675
685
|
buffer = StringIO.new('123456789')
|
676
686
|
rack_env = {
|
@@ -682,7 +692,7 @@ class ClientTest < Raygun::UnitTest
|
|
682
692
|
|
683
693
|
raw_data = @client.send(:raw_data, rack_env)
|
684
694
|
|
685
|
-
assert_equal(
|
695
|
+
assert_equal('123456789', raw_data)
|
686
696
|
end
|
687
697
|
|
688
698
|
private
|
@@ -126,6 +126,22 @@ class ConfigurationTest < Raygun::UnitTest
|
|
126
126
|
Raygun.configuration.custom_data = nil
|
127
127
|
end
|
128
128
|
|
129
|
+
def test_setting_tags_to_array
|
130
|
+
Raygun.setup do |c|
|
131
|
+
c.tags = ['test']
|
132
|
+
end
|
133
|
+
|
134
|
+
assert_equal Raygun.configuration.tags, ['test']
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_setting_tags_to_proc
|
138
|
+
Raygun.setup do |c|
|
139
|
+
c.tags = ->(exception, env) {}
|
140
|
+
end
|
141
|
+
|
142
|
+
assert Raygun.configuration.tags.is_a?(Proc)
|
143
|
+
end
|
144
|
+
|
129
145
|
def test_api_url_default
|
130
146
|
assert_equal "https://api.raygun.io/", Raygun.configuration.api_url
|
131
147
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: raygun4ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mindscape
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-10-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|