stackify-ruby-apm 1.10.2 → 1.10.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/stackify_apm/config.rb +1 -0
- data/lib/stackify_apm/context.rb +1 -1
- data/lib/stackify_apm/helper/database_helper.rb +1 -1
- data/lib/stackify_apm/instrumenter_helper.rb +3 -4
- data/lib/stackify_apm/root_info.rb +1 -1
- data/lib/stackify_apm/spies/delayed_job.rb +49 -0
- data/lib/stackify_apm/version.rb +1 -1
- data/stackify-ruby-apm.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b2d9a08bd90459363bada0dcc980ab8ee610d5f7bbb41100c53f4d6dc8be6ac
|
4
|
+
data.tar.gz: 624b3bd6b64a48270927b77e94663e11416e8f0be84fd86b32b6f5c215251510
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e749581d00b6d425476dfd7683a86b4ccd67491a5713c50be3602668e666519d94ca3abc74f561454d8cb2283113426caee59e226cea4e2dd83ba1bd0fbc856
|
7
|
+
data.tar.gz: 9f6784afe5998f4d5c3b5c2501df118d19384b0bd00e9e57c20d58ccc1987021eed0ce114b642624b5ca11339d51c2a91d5527a6a10eab123f57fc8b61fd479b
|
data/lib/stackify_apm/config.rb
CHANGED
data/lib/stackify_apm/context.rb
CHANGED
@@ -90,9 +90,8 @@ module StackifyRubyAPM
|
|
90
90
|
)
|
91
91
|
end
|
92
92
|
|
93
|
-
req = #{current_method_without}(*args, &block)
|
94
93
|
StackifyRubyAPM.span name, type, context: ctx do
|
95
|
-
|
94
|
+
#{current_method_without}(*args, &block)
|
96
95
|
end
|
97
96
|
else
|
98
97
|
return #{current_method_without}(*args, &block)
|
@@ -169,9 +168,9 @@ module StackifyRubyAPM
|
|
169
168
|
CATEGORY: 'Ruby'
|
170
169
|
)
|
171
170
|
end
|
172
|
-
|
171
|
+
|
173
172
|
StackifyRubyAPM.span name, type, context: ctx do
|
174
|
-
|
173
|
+
_self_without_apm_#{current_method}(*args, &block)
|
175
174
|
end
|
176
175
|
else
|
177
176
|
return _self_without_apm_#{current_method}(*args, &block)
|
@@ -26,7 +26,7 @@ module StackifyRubyAPM
|
|
26
26
|
|
27
27
|
hash = {
|
28
28
|
PROFILER_VERSION: StackifyRubyAPM::VERSION,
|
29
|
-
CATEGORY: 'Ruby',
|
29
|
+
CATEGORY: @transaction.context.category || 'Ruby',
|
30
30
|
APPLICATION_PATH: '/',
|
31
31
|
APPLICATION_FILESYSTEM_PATH: @config.root_path,
|
32
32
|
APPLICATION_NAME: @config.application_name.strip,
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Monkey patch for the delayed_job class for running async tasks.
|
4
|
+
#
|
5
|
+
|
6
|
+
module StackifyRubyAPM
|
7
|
+
# @api private
|
8
|
+
module Spies
|
9
|
+
# @api private
|
10
|
+
class DelayedJobSpy
|
11
|
+
def install
|
12
|
+
Delayed::Backend::Base.class_eval do
|
13
|
+
alias_method 'invoke_job_without_apm', 'invoke_job'
|
14
|
+
|
15
|
+
def invoke_job(*args, &block)
|
16
|
+
ret = nil
|
17
|
+
begin
|
18
|
+
name = nil
|
19
|
+
if payload_object.is_a?(::Delayed::PerformableMethod)
|
20
|
+
object = payload_object.object
|
21
|
+
klass = object.is_a?(Class) ? object : object.class
|
22
|
+
class_name = klass.name
|
23
|
+
separator = payload_object.object.is_a?(Class) ? '.' : '#'
|
24
|
+
method_name = payload_object.method_name
|
25
|
+
name = "#{class_name}#{separator}#{method_name}"
|
26
|
+
else
|
27
|
+
name = payload_object.class.name
|
28
|
+
end
|
29
|
+
ctx = StackifyRubyAPM::Context.new
|
30
|
+
ctx.category = 'Delayed::Job'
|
31
|
+
transaction = StackifyRubyAPM.transaction name, 'TASK', context: ctx
|
32
|
+
ret = invoke_job_without_apm(*args, &block)
|
33
|
+
rescue StackifyRubyAPM::InternalError
|
34
|
+
raise # Don't report StackifyRubyAPM errors
|
35
|
+
rescue StandardError => e
|
36
|
+
StackifyRubyAPM.report e
|
37
|
+
raise e
|
38
|
+
ensure
|
39
|
+
transaction.submit()
|
40
|
+
end
|
41
|
+
ret
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
register 'Delayed::Backend::Base', 'delayed/backend/base', DelayedJobSpy.new
|
48
|
+
end
|
49
|
+
end
|
data/lib/stackify_apm/version.rb
CHANGED
data/stackify-ruby-apm.gemspec
CHANGED
@@ -54,6 +54,7 @@ Gem::Specification.new do |spec|
|
|
54
54
|
spec.add_development_dependency 'timecop'
|
55
55
|
spec.add_development_dependency 'to_bool'
|
56
56
|
spec.add_development_dependency 'webmock'
|
57
|
+
spec.add_development_dependency 'delayed_job'
|
57
58
|
|
58
59
|
spec.add_dependency('concurrent-ruby', '~> 1.0')
|
59
60
|
spec.add_dependency('delegate_matcher', '~> 0.4')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stackify-ruby-apm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.10.
|
4
|
+
version: 1.10.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stackify
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -332,6 +332,20 @@ dependencies:
|
|
332
332
|
- - ">="
|
333
333
|
- !ruby/object:Gem::Version
|
334
334
|
version: '0'
|
335
|
+
- !ruby/object:Gem::Dependency
|
336
|
+
name: delayed_job
|
337
|
+
requirement: !ruby/object:Gem::Requirement
|
338
|
+
requirements:
|
339
|
+
- - ">="
|
340
|
+
- !ruby/object:Gem::Version
|
341
|
+
version: '0'
|
342
|
+
type: :development
|
343
|
+
prerelease: false
|
344
|
+
version_requirements: !ruby/object:Gem::Requirement
|
345
|
+
requirements:
|
346
|
+
- - ">="
|
347
|
+
- !ruby/object:Gem::Version
|
348
|
+
version: '0'
|
335
349
|
- !ruby/object:Gem::Dependency
|
336
350
|
name: concurrent-ruby
|
337
351
|
requirement: !ruby/object:Gem::Requirement
|
@@ -457,6 +471,7 @@ files:
|
|
457
471
|
- lib/stackify_apm/spies/curb/easy.rb
|
458
472
|
- lib/stackify_apm/spies/curb/multi.rb
|
459
473
|
- lib/stackify_apm/spies/custom_instrumenter.rb
|
474
|
+
- lib/stackify_apm/spies/delayed_job.rb
|
460
475
|
- lib/stackify_apm/spies/httparty.rb
|
461
476
|
- lib/stackify_apm/spies/httpclient.rb
|
462
477
|
- lib/stackify_apm/spies/httprb.rb
|