stackify-ruby-apm 1.9.8 → 1.11.1

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
  SHA256:
3
- metadata.gz: 897d8d6a22f1c94f016daa020e4b423a9f3d891141a88874c9630a0940a1ccec
4
- data.tar.gz: 701690bce6b06e581c57640107f1e49999ba81e284fd269edb893390d15fbb6f
3
+ metadata.gz: 5617c10d650b0e32554d8e6ae3deb13c24275b7d2df82f0f1c6b223654397e4d
4
+ data.tar.gz: 55a0d2aa8b75165c5f4d7c4cdc0fad19411ae6b3a6e3c57e3d47e13b4f9b37a7
5
5
  SHA512:
6
- metadata.gz: 55f6cff0dcdcef0626befd3522ca56cd78ce82a360d2ed13aba19dc6b00c6fb6bdc7f0033fd40bfc5ecdc25608f65b293654ac2993c171ab301f84e5c92b72f8
7
- data.tar.gz: 71c2cfdfa651ba9bcefc10e2c747e83016e5394fa601bd30640ae0a3729dde52b037df36134c1a773e963f8b74102c50466fed7d0642f013cc67bd559ea61a00
6
+ metadata.gz: d9cd97e0abb2265239113f5afcfa73bb7d9522de34e37137e3da8ab5b49705d96864d8f03c3e55908623e695bfe5a5b981319463e8a0ebf4e085d71c2b020e0d
7
+ data.tar.gz: 842839b3d394985cbf583b3b200515272e3c510b377406f0ff0054d2ca85d8145a7f1ae81c3edfec4362f35cf30d5d4f5b2ab17da739a8fba6e8a8b720953866
@@ -101,8 +101,6 @@ module StackifyRubyAPM
101
101
  info '[Agent] start()'
102
102
  info '[Agent] transport type: ' + @config.transport
103
103
  spies_name = ''
104
- # If the rake task is detected as being ran then we don't load the spies
105
- StackifyRubyAPM::Util.apm_disabled_in_rake
106
104
  return false unless @config.instrument
107
105
  config.enabled_spies.each do |lib|
108
106
  spies_name = spies_name + ', ' + lib.inspect.to_s
@@ -209,6 +209,8 @@ module StackifyRubyAPM
209
209
  curb/multi
210
210
  httparty
211
211
  stackify_logger
212
+ sidekiq
213
+ delayed_job
212
214
  ]
213
215
  end
214
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)
@@ -14,9 +14,6 @@ module StackifyRubyAPM
14
14
  if FileTest.exist?(@filename)
15
15
  else
16
16
  @dev = create_logfile(@filename)
17
- File.chmod(0o777, @filename)
18
-
19
- return @dev
20
17
  end
21
18
  end
22
19
  write_without_apm(message)
@@ -58,7 +55,6 @@ module StackifyRubyAPM
58
55
  temp_newfilename = "#{temp_filename}-#{filename_counter}.log"
59
56
  @filename = temp_newfilename
60
57
  @dev = create_logfile(@filename)
61
- File.chmod(0o777, @filename)
62
58
 
63
59
  true
64
60
  end
@@ -80,10 +76,16 @@ module StackifyRubyAPM
80
76
  @dev.close rescue nil
81
77
  File.rename(@filename.to_s, age_file)
82
78
  @dev = create_logfile(@filename)
83
- File.chmod(0o777, @filename)
84
79
 
85
80
  true
86
81
  end
82
+
83
+ # Override create_logfile of core LogDevice class where we set File.chmod to 0o777
84
+ def create_logfile(filename)
85
+ logdev = super
86
+ File.chmod(0o777, filename)
87
+ logdev
88
+ end
87
89
  # rubocop:enable Style/RescueModifier
88
90
  # rubocop:enable Lint/RescueWithoutErrorClass
89
91
  end
@@ -29,7 +29,11 @@ module StackifyRubyAPM
29
29
  temp_filename = logdev.gsub('-1.log', '')
30
30
  new_logdev = temp_filename + '-1.log'
31
31
  end
32
- @logdev = LogDevice.new(new_logdev, shift_size: shift_size)
32
+ begin
33
+ @logdev = LogDevice.new(new_logdev, shift_size: shift_size)
34
+ rescue StandardError => e
35
+ puts "Stackify Profiler unable to access [" + logdev + "]"
36
+ end
33
37
  end
34
38
  end
35
39
  require 'stackify_apm/logger/log_device'
@@ -20,7 +20,11 @@ module StackifyRubyAPM
20
20
  temp_filename = logdev.gsub('-1.log', '')
21
21
  new_logdev = temp_filename + '-1.log'
22
22
  end
23
- @logdev = LogDevice.new(new_logdev, shift_size: shift_size)
23
+ begin
24
+ @logdev = LogDevice.new(new_logdev, shift_size: shift_size)
25
+ rescue StandardError => e
26
+ puts "Stackify Profiler unable to access [" + logdev + "]"
27
+ end
24
28
  end
25
29
  end
26
30
 
@@ -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,
@@ -3,6 +3,7 @@
3
3
  # Monkey patch for the custom instrumentation any values from config/stackify.json will be loop and will
4
4
  # register as a spy.
5
5
  #
6
+ require 'logger'
6
7
  require 'stackify_apm/instrumenter_helper.rb'
7
8
  require 'stackify_apm/config'
8
9
  require 'json'
@@ -10,7 +11,8 @@ require 'json'
10
11
  # rubocop:disable Metrics/PerceivedComplexity
11
12
  module StackifyRubyAPM
12
13
  # @api private
13
- module Spies
14
+ module Spies extend Log
15
+
14
16
  def self.run_custom_instrumentation
15
17
  config = Config.new
16
18
  to_instrument = parse_json_config(config.json_config_file)
@@ -27,11 +29,21 @@ module StackifyRubyAPM
27
29
  tracked_func = custom_spy['trackedFunction']
28
30
  tracked_func_name = defined?(custom_spy['trackedFunctionName']) ? custom_spy['trackedFunctionName'] : ''
29
31
  transaction = defined?(custom_spy['transaction']) ? custom_spy['transaction'] : nil
32
+ file_path = defined?(custom_spy['file_path']) ? custom_spy['file_path'] : nil
30
33
 
31
34
  tracked_function_tpl = tracked_func_name.nil? ? '{{ClassName}}.{{MethodName}}' : tracked_func_name
32
35
  tracked_function_name = tracked_function_tpl.sub '{{ClassName}}', current_class
33
36
  tracked_function_name = tracked_function_name.sub '{{MethodName}}', current_method
34
37
 
38
+ if !class_exists?(current_class) && !file_path.nil?
39
+ begin
40
+ require file_path
41
+ rescue LoadError => e
42
+ debug "[StackifyRubyAPM] File path doesn't exist."
43
+ debug e.inspect
44
+ end
45
+ end
46
+
35
47
  # rubocop:disable Style/Next
36
48
  if class_exists?(current_class)
37
49
  mod_constant = Module.const_get(current_class.to_s)
@@ -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
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Monkey patch for the sidekiq class for running async tasks.
4
+ #
5
+
6
+ module StackifyRubyAPM
7
+ # @api private
8
+ module Spies
9
+ # @api private
10
+ class SidekiqClientSpy
11
+ def install
12
+ Sidekiq::Processor.class_eval do
13
+ alias_method 'process_without_apm', 'process'
14
+
15
+ def process(work, *args, &block)
16
+ ret = nil
17
+ begin
18
+ job = nil
19
+ if defined? work.message
20
+ job = work.message
21
+ else
22
+ job = work.job
23
+ end
24
+ job_hash = JSON.parse job
25
+ name = job_hash["class"]
26
+ transaction = StackifyRubyAPM.transaction name, 'TASK'
27
+ ret = process_without_apm(work, *args, &block)
28
+ rescue StackifyRubyAPM::InternalError
29
+ raise # Don't report StackifyRubyAPM errors
30
+ rescue StandardError => e
31
+ StackifyRubyAPM.report e
32
+ raise e
33
+ ensure
34
+ transaction.submit()
35
+ end
36
+ ret
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ register 'Sidekiq::Processor', 'sidekiq/processor', SidekiqClientSpy.new
43
+ end
44
+ end
@@ -1,3 +1,4 @@
1
+ require 'json'
1
2
  require 'stackify_apm/root_info'
2
3
  require 'stackify_apm/serializers'
3
4
 
@@ -12,6 +13,15 @@ module StackifyRubyAPM
12
13
  @transaction_serializers = Serializers::Transactions.new(config)
13
14
  end
14
15
 
16
+ def get_protobuf_message(transactions)
17
+ protobuf_obj = build_message(transactions)
18
+ StackifyProtoBuf::Traces.encode(protobuf_obj)
19
+ end
20
+
21
+ def get_json_message(transactions)
22
+ JSON.generate(build_json_message(transactions))
23
+ end
24
+
15
25
  # This method will build a group of Stackify::Traces from the protobuf objects.
16
26
  # It accept Array of transactions.
17
27
  def build_message(transactions = [])
@@ -28,6 +38,19 @@ module StackifyRubyAPM
28
38
  debug "[AgentBaseTransport] build_message() exception: #{e.inspect}"
29
39
  end
30
40
 
41
+ def build_json_message(transactions = [])
42
+ traces = []
43
+ transactions.each do |transaction|
44
+ # convert transaction to json
45
+ json_transaction = @transaction_serializers.build_json(@config, transaction)
46
+ # add to traces array
47
+ traces << json_transaction
48
+ end
49
+ return traces
50
+ rescue StandardError => e
51
+ debug "[AgentBaseTransport] build_json_message() exception: #{e.inspect}"
52
+ end
53
+
31
54
  def post(_transactions = [])
32
55
  raise NotImplementedError
33
56
  end
@@ -5,24 +5,32 @@ require 'faraday'
5
5
  require 'ostruct'
6
6
 
7
7
  module StackifyRubyAPM
8
- # This class will handle the sending of protobuf messages through HTTP.
8
+ # This class will handle the sending of transaction messages through HTTP.
9
9
  # @api private
10
10
  class AgentHTTPClient < AgentBaseTransport
11
11
  include Log
12
12
 
13
- HEADERS = {
14
- 'Content-Type' => 'application/x-protobuf'
15
- }.freeze
16
-
17
13
  def initialize(config)
18
14
  @config = config
19
15
  super(config)
20
16
  end
21
17
 
18
+ def get_protobuf_headers
19
+ {
20
+ 'Content-Type' => 'application/x-protobuf'
21
+ }.freeze
22
+ end
23
+
24
+ def get_json_headers
25
+ {
26
+ 'Content-Type' => 'application/json'
27
+ }.freeze
28
+ end
29
+
22
30
  # rubocop:disable Metrics/CyclomaticComplexity
23
31
  # rubocop:disable Metrics/PerceivedComplexity
24
32
  #
25
- # This method will send a protobuf message to HTTP request.
33
+ # This method will send a transction message to HTTP request.
26
34
  # It will accept Array of transactions.
27
35
  def post(transactions = [])
28
36
  debug '[AgentHTTPClient] post()' if ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
@@ -31,16 +39,14 @@ module StackifyRubyAPM
31
39
  retry_count = 0
32
40
  delay = @config.delay_seconds
33
41
  begin
34
- protobuf_obj = build_message(transactions)
35
- message = StackifyProtoBuf::Traces.encode(protobuf_obj)
36
- # Convert message into binary and send it to http request
42
+ message = get_json_message(transactions)
37
43
  conn = Faraday.new(ssl: { verify: false })
38
44
  response = conn.post do |req|
39
45
  req.url URI(@config.transport_http_endpoint + @config.agent_traces_url)
40
- req.headers = HEADERS
46
+ req.headers = get_json_headers
41
47
  req.body = message
42
48
  end
43
- if response.try(:status) == 200
49
+ if defined?(response.status) && response.status == 200
44
50
  debug '[AgentHTTPClient] Successfully send message via http request.' if ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
45
51
  elsif ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
46
52
  debug "[AgentHTTPClient] Failure sending via http request: #{response.inspect}"
@@ -4,7 +4,7 @@ require 'net_http_unix'
4
4
  require 'ostruct'
5
5
 
6
6
  module StackifyRubyAPM
7
- # This class will handle the sending of protobuf messages through unix domain socket.
7
+ # This class will handle the sending of transaction messages through unix domain socket.
8
8
  # @api private
9
9
  class UnixSocketClient < AgentBaseTransport
10
10
  include Log
@@ -14,10 +14,18 @@ module StackifyRubyAPM
14
14
  super(config)
15
15
  end
16
16
 
17
+ def get_protobuf_headers
18
+ 'application/x-protobuf'
19
+ end
20
+
21
+ def get_json_headers
22
+ 'application/json'
23
+ end
24
+
17
25
  # rubocop:disable Metrics/CyclomaticComplexity
18
26
  # rubocop:disable Metrics/PerceivedComplexity
19
27
  #
20
- # This method will send a protobuf message to the unix domain socket.
28
+ # This method will send a transaction message to the unix domain socket.
21
29
  # It will accept Array of transactions.
22
30
  def post(transactions = [])
23
31
  debug '[UnixSocketClient] post()' if ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
@@ -27,11 +35,10 @@ module StackifyRubyAPM
27
35
  delay = @config.delay_seconds
28
36
  begin
29
37
  # Convert message into binary and send it to unix domain socket
30
- protobuf_obj = build_message(transactions)
31
- message = StackifyProtoBuf::Traces.encode(protobuf_obj)
38
+ message = get_json_message(transactions)
32
39
  client = NetX::HTTPUnix.new('unix://' + @config.unix_socket_path)
33
40
  req = Net::HTTP::Post.new(@config.agent_traces_url)
34
- req.set_content_type('application/x-protobuf')
41
+ req.set_content_type(get_json_headers)
35
42
  req.body = message
36
43
  response = client.request(req)
37
44
  debug "[UnixSocketClient] status_code = #{response.code}" if ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
@@ -8,15 +8,6 @@ module StackifyRubyAPM
8
8
  target.to_i * 1_000_000 + target.usec
9
9
  end
10
10
 
11
- #
12
- # This method will check if there is any rake task is running.
13
- # If rake task is detected we set instrument=false and don't load the spies.
14
- #
15
- def self.apm_disabled_in_rake
16
- cmd_rake = ($PROGRAM_NAME =~ /rake$/)
17
- StackifyRubyAPM.agent.config.instrument = false if cmd_rake
18
- end
19
-
20
11
  def self.host_os
21
12
  host_os = RbConfig::CONFIG['host_os']
22
13
  case host_os
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Sets the version of the APM
4
4
  module StackifyRubyAPM
5
- VERSION = '1.9.8'.freeze
5
+ VERSION = '1.11.1'.freeze
6
6
  end
@@ -35,9 +35,6 @@ require 'stackify_apm/transport/unix_socket_client'
35
35
  require 'stackify_apm/transport/agent_http_client'
36
36
  require 'stackify_apm/transport/aws_lambda_logging'
37
37
 
38
- require 'google/protobuf'
39
- require 'proto/stackify_trace'
40
-
41
38
  # Checks if the framework using is Rails
42
39
  require 'stackify_apm/railtie' if defined?(::Rails::Railtie)
43
40
 
@@ -33,20 +33,6 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency 'bigdecimal'
34
34
  end
35
35
 
36
- # rubocop
37
- if RUBY_VERSION >= '2.2.0'
38
- spec.add_development_dependency 'rubocop-performance'
39
- end
40
-
41
- # protobuf
42
- if RUBY_VERSION >= '2.7'
43
- spec.add_development_dependency 'google-protobuf', '= 3.5.0'
44
- elsif RUBY_VERSION > '2.3'
45
- spec.add_development_dependency 'google-protobuf', '>= 3.5.0'
46
- else
47
- spec.add_development_dependency 'google-protobuf', '= 3.5.0'
48
- end
49
-
50
36
  spec.add_development_dependency 'bundler', '~> 1.16'
51
37
  spec.add_development_dependency 'rake', '~> 10.0'
52
38
  spec.add_development_dependency 'rspec', '~> 3.0'
@@ -57,7 +43,6 @@ Gem::Specification.new do |spec|
57
43
  spec.add_development_dependency 'httpclient'
58
44
  spec.add_development_dependency 'mongo'
59
45
  spec.add_development_dependency 'mysql2'
60
- spec.add_development_dependency 'net_http_unix', '~> 0.2'
61
46
  spec.add_development_dependency 'pg', '~> 0.20'
62
47
  spec.add_development_dependency 'rack-test'
63
48
  spec.add_development_dependency 'rubocop'
@@ -69,11 +54,11 @@ Gem::Specification.new do |spec|
69
54
  spec.add_development_dependency 'timecop'
70
55
  spec.add_development_dependency 'to_bool'
71
56
  spec.add_development_dependency 'webmock'
57
+ spec.add_development_dependency 'delayed_job'
72
58
 
73
59
  spec.add_dependency('concurrent-ruby', '~> 1.0')
74
60
  spec.add_dependency('delegate_matcher', '~> 0.4')
75
61
  spec.add_dependency('faraday', '~> 0.8')
76
- spec.add_dependency('google-protobuf', '>= 3.5.0', '< 4.0')
77
62
  spec.add_dependency('net_http_unix', '~> 0.2')
78
63
  spec.add_dependency('rufus-scheduler', '~> 3.0')
79
64
  end
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.9.8
4
+ version: 1.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stackify
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-11 00:00:00.000000000 Z
11
+ date: 2020-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -38,34 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rubocop-performance
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: google-protobuf
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 3.5.0
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: 3.5.0
69
41
  - !ruby/object:Gem::Dependency
70
42
  name: bundler
71
43
  requirement: !ruby/object:Gem::Requirement
@@ -206,20 +178,6 @@ dependencies:
206
178
  - - ">="
207
179
  - !ruby/object:Gem::Version
208
180
  version: '0'
209
- - !ruby/object:Gem::Dependency
210
- name: net_http_unix
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - "~>"
214
- - !ruby/object:Gem::Version
215
- version: '0.2'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - "~>"
221
- - !ruby/object:Gem::Version
222
- version: '0.2'
223
181
  - !ruby/object:Gem::Dependency
224
182
  name: pg
225
183
  requirement: !ruby/object:Gem::Requirement
@@ -374,6 +332,20 @@ dependencies:
374
332
  - - ">="
375
333
  - !ruby/object:Gem::Version
376
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'
377
349
  - !ruby/object:Gem::Dependency
378
350
  name: concurrent-ruby
379
351
  requirement: !ruby/object:Gem::Requirement
@@ -416,26 +388,6 @@ dependencies:
416
388
  - - "~>"
417
389
  - !ruby/object:Gem::Version
418
390
  version: '0.8'
419
- - !ruby/object:Gem::Dependency
420
- name: google-protobuf
421
- requirement: !ruby/object:Gem::Requirement
422
- requirements:
423
- - - ">="
424
- - !ruby/object:Gem::Version
425
- version: 3.5.0
426
- - - "<"
427
- - !ruby/object:Gem::Version
428
- version: '4.0'
429
- type: :runtime
430
- prerelease: false
431
- version_requirements: !ruby/object:Gem::Requirement
432
- requirements:
433
- - - ">="
434
- - !ruby/object:Gem::Version
435
- version: 3.5.0
436
- - - "<"
437
- - !ruby/object:Gem::Version
438
- version: '4.0'
439
391
  - !ruby/object:Gem::Dependency
440
392
  name: net_http_unix
441
393
  requirement: !ruby/object:Gem::Requirement
@@ -519,6 +471,7 @@ files:
519
471
  - lib/stackify_apm/spies/curb/easy.rb
520
472
  - lib/stackify_apm/spies/curb/multi.rb
521
473
  - lib/stackify_apm/spies/custom_instrumenter.rb
474
+ - lib/stackify_apm/spies/delayed_job.rb
522
475
  - lib/stackify_apm/spies/httparty.rb
523
476
  - lib/stackify_apm/spies/httpclient.rb
524
477
  - lib/stackify_apm/spies/httprb.rb
@@ -526,6 +479,7 @@ files:
526
479
  - lib/stackify_apm/spies/net_http.rb
527
480
  - lib/stackify_apm/spies/redis.rb
528
481
  - lib/stackify_apm/spies/sequel.rb
482
+ - lib/stackify_apm/spies/sidekiq.rb
529
483
  - lib/stackify_apm/spies/sinatra.rb
530
484
  - lib/stackify_apm/spies/sinatra_activerecord/mysql_adapter.rb
531
485
  - lib/stackify_apm/spies/sinatra_activerecord/postgresql_adapter.rb