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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ace5e2981f0588711fce71484c2192d09647f9387693082b55c907ed421da82
4
- data.tar.gz: 1bff561f0a9e316cf487bba4168c89a7bd6defb4f87c0dd1eacdf648ebee2d3c
3
+ metadata.gz: 4b2d9a08bd90459363bada0dcc980ab8ee610d5f7bbb41100c53f4d6dc8be6ac
4
+ data.tar.gz: 624b3bd6b64a48270927b77e94663e11416e8f0be84fd86b32b6f5c215251510
5
5
  SHA512:
6
- metadata.gz: 540d32c55572249886f87bd3c339cd158d9f85d0a0556323698b25046decae29eab319669ec5b077121cb48046c08fca6eb0ad8223d3488fabb54fe0183c6a0a
7
- data.tar.gz: ae9f59d8c40f09c71833d67cb836b7ebb278934b336160f2375763416479fa5050fdbbbfbc2b7843630dc21b005caebeb9372df835c93e254c9f507d1ce7cc29
6
+ metadata.gz: 8e749581d00b6d425476dfd7683a86b4ccd67491a5713c50be3602668e666519d94ca3abc74f561454d8cb2283113426caee59e226cea4e2dd83ba1bd0fbc856
7
+ data.tar.gz: 9f6784afe5998f4d5c3b5c2501df118d19384b0bd00e9e57c20d58ccc1987021eed0ce114b642624b5ca11339d51c2a91d5527a6a10eab123f57fc8b61fd479b
@@ -210,6 +210,7 @@ module StackifyRubyAPM
210
210
  httparty
211
211
  stackify_logger
212
212
  sidekiq
213
+ delayed_job
213
214
  ]
214
215
  end
215
216
 
@@ -12,7 +12,7 @@ module StackifyRubyAPM
12
12
  class Context
13
13
  include NaivelyHashable
14
14
 
15
- attr_accessor :request, :response, :aws
15
+ attr_accessor :request, :response, :aws, :category
16
16
  attr_reader :custom, :tags
17
17
 
18
18
  def initialize
@@ -18,7 +18,7 @@ module DatabaseHelper
18
18
  elsif driver.include? 'db2'
19
19
  'db2'
20
20
  elsif driver.include? 'sqlite'
21
- 'generic'
21
+ 'sqlite'
22
22
  end
23
23
  end
24
24
  # rubocop:enable Metrics/CyclomaticComplexity
@@ -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
- req
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
- req = _self_without_apm_#{current_method}(*args, &block)
171
+
173
172
  StackifyRubyAPM.span name, type, context: ctx do
174
- req
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
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Sets the version of the APM
4
4
  module StackifyRubyAPM
5
- VERSION = '1.10.2'.freeze
5
+ VERSION = '1.10.4'.freeze
6
6
  end
@@ -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.2
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-05-18 00:00:00.000000000 Z
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