stackify-ruby-apm 1.9.5 → 1.11.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f7fd8fff02ed67e5112d4b59f84063cdebd84862e05f84376bd98c3237c3625
4
- data.tar.gz: 0b59b1c98df2313f254e0f3f10fbe9291510e9316360d839c1073beee9100ab0
3
+ metadata.gz: c11dd1bfd73ddd45923cd58ee7672b9a6e0bc872ca07e92d10558b2b826f3f7b
4
+ data.tar.gz: '018b2653259a17ada4fbc55aa117ac0300c2f0a0e4804e129ea2f3f24f4cb34e'
5
5
  SHA512:
6
- metadata.gz: f347b093845bedd23269048c352aeac43b9bde434f22d9805e60fba67d08bd0eb1907d052f8f3b522f1b3452faaf4a1c02fb332ae28abd49bdba37e65bd6d714
7
- data.tar.gz: 71f935e7e9096c5a4e4c1d365b8e45790364f77a4e6045f0af2fe79e5475662eaa93937de6a95a7c5e8b15a55e0b57c947bbe28da7f9c0d081da6cdf8886efa6
6
+ metadata.gz: 508a7a1213e03e3adfac74f4a1868b441cf878ad607a10911c7662f72665ae6715a5cbe562e0143f1a0199ea08f51340b7c74c90a457e7f32ae1f268077978be
7
+ data.tar.gz: 8e10efe82d70b1728dc1661e896b3138e5dfd4a2bbeb5f77a3e2324b090e91554117039fb45de140e21bdb391caeade87ce7eee57c5c1f1b5b5a60c9c7fdb4c6
data/Gemfile CHANGED
@@ -4,27 +4,3 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in stackify-ruby-apm.gemspec
6
6
  gemspec
7
-
8
- group :test do
9
- gem 'activerecord'
10
- gem 'curb', '0.9.8'
11
- gem 'fakeredis'
12
- gem 'google-protobuf', '3.5.0'
13
- gem 'http'
14
- gem 'httpclient'
15
- gem 'mongo'
16
- gem 'mysql2'
17
- gem 'net_http_unix', '~> 0.2'
18
- gem 'pg', '~> 0.20'
19
- gem 'rack-test'
20
- gem 'rails', '~> 4.0'
21
- gem 'rubocop', require: false
22
- gem 'sequel'
23
- gem 'sinatra'
24
- gem 'sinatra-activerecord'
25
- gem 'sqlite3', '1.3.13'
26
- gem 'stackify-api-ruby'
27
- gem 'timecop'
28
- gem 'to_bool'
29
- gem 'webmock'
30
- end
@@ -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
@@ -25,7 +25,8 @@ module StackifyRubyAPM
25
25
  end
26
26
 
27
27
  hash = {
28
- CATEGORY: 'Ruby',
28
+ PROFILER_VERSION: StackifyRubyAPM::VERSION,
29
+ CATEGORY: @transaction.context.category || 'Ruby',
29
30
  APPLICATION_PATH: '/',
30
31
  APPLICATION_FILESYSTEM_PATH: @config.root_path,
31
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.5'.freeze
5
+ VERSION = '1.11.0'.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
 
@@ -21,13 +21,44 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ['lib']
23
23
 
24
+ # rails
25
+ if RUBY_VERSION > '2.5'
26
+ spec.add_development_dependency 'rails', '~> 5.0'
27
+ else
28
+ spec.add_development_dependency 'rails', '~> 4.0'
29
+ end
30
+
31
+ # bigdecimal
32
+ if RUBY_VERSION > '2.5'
33
+ spec.add_development_dependency 'bigdecimal'
34
+ end
35
+
24
36
  spec.add_development_dependency 'bundler', '~> 1.16'
25
37
  spec.add_development_dependency 'rake', '~> 10.0'
26
38
  spec.add_development_dependency 'rspec', '~> 3.0'
39
+ spec.add_development_dependency 'activerecord'
40
+ spec.add_development_dependency 'curb', '0.9.8'
41
+ spec.add_development_dependency 'fakeredis'
42
+ spec.add_development_dependency 'http'
43
+ spec.add_development_dependency 'httpclient'
44
+ spec.add_development_dependency 'mongo'
45
+ spec.add_development_dependency 'mysql2'
46
+ spec.add_development_dependency 'pg', '~> 0.20'
47
+ spec.add_development_dependency 'rack-test'
48
+ spec.add_development_dependency 'rubocop'
49
+ spec.add_development_dependency 'sequel'
50
+ spec.add_development_dependency 'sinatra'
51
+ spec.add_development_dependency 'sinatra-activerecord'
52
+ spec.add_development_dependency 'sqlite3', '1.3.13'
53
+ spec.add_development_dependency 'stackify-api-ruby'
54
+ spec.add_development_dependency 'timecop'
55
+ spec.add_development_dependency 'to_bool'
56
+ spec.add_development_dependency 'webmock'
57
+ spec.add_development_dependency 'delayed_job'
58
+
27
59
  spec.add_dependency('concurrent-ruby', '~> 1.0')
28
60
  spec.add_dependency('delegate_matcher', '~> 0.4')
29
61
  spec.add_dependency('faraday', '~> 0.8')
30
- spec.add_dependency('google-protobuf', '3.5.0')
31
62
  spec.add_dependency('net_http_unix', '~> 0.2')
32
- spec.add_dependency('rufus-scheduler', '~> 3.5')
63
+ spec.add_dependency('rufus-scheduler', '~> 3.0')
33
64
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stackify-ruby-apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.5
4
+ version: 1.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stackify
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-09 00:00:00.000000000 Z
11
+ date: 2020-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bigdecimal
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +80,272 @@ dependencies:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
82
  version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: activerecord
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: curb
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 0.9.8
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.9.8
111
+ - !ruby/object:Gem::Dependency
112
+ name: fakeredis
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: http
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: httpclient
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: mongo
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: mysql2
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: pg
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '0.20'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '0.20'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rack-test
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: rubocop
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: sequel
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: sinatra
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: sinatra-activerecord
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: sqlite3
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - '='
270
+ - !ruby/object:Gem::Version
271
+ version: 1.3.13
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - '='
277
+ - !ruby/object:Gem::Version
278
+ version: 1.3.13
279
+ - !ruby/object:Gem::Dependency
280
+ name: stackify-api-ruby
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :development
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ - !ruby/object:Gem::Dependency
294
+ name: timecop
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ type: :development
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ - !ruby/object:Gem::Dependency
308
+ name: to_bool
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ type: :development
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0'
321
+ - !ruby/object:Gem::Dependency
322
+ name: webmock
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - ">="
326
+ - !ruby/object:Gem::Version
327
+ version: '0'
328
+ type: :development
329
+ prerelease: false
330
+ version_requirements: !ruby/object:Gem::Requirement
331
+ requirements:
332
+ - - ">="
333
+ - !ruby/object:Gem::Version
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'
55
349
  - !ruby/object:Gem::Dependency
56
350
  name: concurrent-ruby
57
351
  requirement: !ruby/object:Gem::Requirement
@@ -94,20 +388,6 @@ dependencies:
94
388
  - - "~>"
95
389
  - !ruby/object:Gem::Version
96
390
  version: '0.8'
97
- - !ruby/object:Gem::Dependency
98
- name: google-protobuf
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '='
102
- - !ruby/object:Gem::Version
103
- version: 3.5.0
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '='
109
- - !ruby/object:Gem::Version
110
- version: 3.5.0
111
391
  - !ruby/object:Gem::Dependency
112
392
  name: net_http_unix
113
393
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +408,14 @@ dependencies:
128
408
  requirements:
129
409
  - - "~>"
130
410
  - !ruby/object:Gem::Version
131
- version: '3.5'
411
+ version: '3.0'
132
412
  type: :runtime
133
413
  prerelease: false
134
414
  version_requirements: !ruby/object:Gem::Requirement
135
415
  requirements:
136
416
  - - "~>"
137
417
  - !ruby/object:Gem::Version
138
- version: '3.5'
418
+ version: '3.0'
139
419
  description:
140
420
  email:
141
421
  - support@stackify.com
@@ -144,7 +424,6 @@ extensions: []
144
424
  extra_rdoc_files: []
145
425
  files:
146
426
  - Gemfile
147
- - Gemfile.lock
148
427
  - LICENSE.md
149
428
  - README.md
150
429
  - Rakefile
@@ -192,6 +471,7 @@ files:
192
471
  - lib/stackify_apm/spies/curb/easy.rb
193
472
  - lib/stackify_apm/spies/curb/multi.rb
194
473
  - lib/stackify_apm/spies/custom_instrumenter.rb
474
+ - lib/stackify_apm/spies/delayed_job.rb
195
475
  - lib/stackify_apm/spies/httparty.rb
196
476
  - lib/stackify_apm/spies/httpclient.rb
197
477
  - lib/stackify_apm/spies/httprb.rb
@@ -199,6 +479,7 @@ files:
199
479
  - lib/stackify_apm/spies/net_http.rb
200
480
  - lib/stackify_apm/spies/redis.rb
201
481
  - lib/stackify_apm/spies/sequel.rb
482
+ - lib/stackify_apm/spies/sidekiq.rb
202
483
  - lib/stackify_apm/spies/sinatra.rb
203
484
  - lib/stackify_apm/spies/sinatra_activerecord/mysql_adapter.rb
204
485
  - lib/stackify_apm/spies/sinatra_activerecord/postgresql_adapter.rb
@@ -1,252 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- stackify-ruby-apm (1.7.4)
5
- concurrent-ruby (~> 1.0)
6
- delegate_matcher (~> 0.4)
7
- google-protobuf (= 3.5.0)
8
- net_http_unix (~> 0.2)
9
- rufus-scheduler (~> 3.5)
10
-
11
- GEM
12
- remote: https://rubygems.org/
13
- specs:
14
- actionmailer (4.2.11.1)
15
- actionpack (= 4.2.11.1)
16
- actionview (= 4.2.11.1)
17
- activejob (= 4.2.11.1)
18
- mail (~> 2.5, >= 2.5.4)
19
- rails-dom-testing (~> 1.0, >= 1.0.5)
20
- actionpack (4.2.11.1)
21
- actionview (= 4.2.11.1)
22
- activesupport (= 4.2.11.1)
23
- rack (~> 1.6)
24
- rack-test (~> 0.6.2)
25
- rails-dom-testing (~> 1.0, >= 1.0.5)
26
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
27
- actionview (4.2.11.1)
28
- activesupport (= 4.2.11.1)
29
- builder (~> 3.1)
30
- erubis (~> 2.7.0)
31
- rails-dom-testing (~> 1.0, >= 1.0.5)
32
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
33
- activejob (4.2.11.1)
34
- activesupport (= 4.2.11.1)
35
- globalid (>= 0.3.0)
36
- activemodel (4.2.11.1)
37
- activesupport (= 4.2.11.1)
38
- builder (~> 3.1)
39
- activerecord (4.2.11.1)
40
- activemodel (= 4.2.11.1)
41
- activesupport (= 4.2.11.1)
42
- arel (~> 6.0)
43
- activesupport (4.2.11.1)
44
- i18n (~> 0.7)
45
- minitest (~> 5.1)
46
- thread_safe (~> 0.3, >= 0.3.4)
47
- tzinfo (~> 1.1)
48
- addressable (2.7.0)
49
- public_suffix (>= 2.0.2, < 5.0)
50
- arel (6.0.4)
51
- ast (2.4.0)
52
- bson (4.5.0)
53
- builder (3.2.3)
54
- concurrent-ruby (1.1.5)
55
- crack (0.4.3)
56
- safe_yaml (~> 1.0.0)
57
- crass (1.0.5)
58
- curb (0.9.8)
59
- delegate_matcher (0.4.3)
60
- proc_extensions (~> 0.2)
61
- diff-lcs (1.3)
62
- domain_name (0.5.20190701)
63
- unf (>= 0.0.5, < 1.0.0)
64
- erubis (2.7.0)
65
- et-orbi (1.2.2)
66
- tzinfo
67
- fakeredis (0.7.0)
68
- redis (>= 3.2, < 5.0)
69
- faraday (0.17.1)
70
- multipart-post (>= 1.2, < 3)
71
- file-tail (1.2.0)
72
- tins (~> 1.0)
73
- fugit (1.3.3)
74
- et-orbi (~> 1.1, >= 1.1.8)
75
- raabro (~> 1.1)
76
- globalid (0.4.2)
77
- activesupport (>= 4.2.0)
78
- google-protobuf (3.5.0)
79
- hashdiff (1.0.0)
80
- http (3.0.0)
81
- addressable (~> 2.3)
82
- http-cookie (~> 1.0)
83
- http-form_data (>= 2.0.0.pre.pre2, < 3)
84
- http_parser.rb (~> 0.6.0)
85
- http-cookie (1.0.3)
86
- domain_name (~> 0.5)
87
- http-form_data (2.1.1)
88
- http_parser.rb (0.6.0)
89
- httpclient (2.8.3)
90
- i18n (0.9.5)
91
- concurrent-ruby (~> 1.0)
92
- loofah (2.4.0)
93
- crass (~> 1.0.2)
94
- nokogiri (>= 1.5.9)
95
- mail (2.7.1)
96
- mini_mime (>= 0.1.1)
97
- mini_mime (1.0.2)
98
- mini_portile2 (2.1.0)
99
- minitest (5.12.0)
100
- mongo (2.10.2)
101
- bson (>= 4.4.2, < 5.0.0)
102
- multipart-post (2.1.1)
103
- mysql2 (0.5.3)
104
- net_http_unix (0.2.2)
105
- nokogiri (1.6.8.1)
106
- mini_portile2 (~> 2.1.0)
107
- parallel (1.13.0)
108
- parser (2.6.5.0)
109
- ast (~> 2.4.0)
110
- pg (0.21.0)
111
- powerpack (0.1.2)
112
- proc_extensions (0.2)
113
- sourcify (~> 0.5)
114
- public_suffix (2.0.5)
115
- raabro (1.1.6)
116
- rack (1.6.11)
117
- rack-protection (1.5.5)
118
- rack
119
- rack-test (0.6.3)
120
- rack (>= 1.0)
121
- rails (4.2.11.1)
122
- actionmailer (= 4.2.11.1)
123
- actionpack (= 4.2.11.1)
124
- actionview (= 4.2.11.1)
125
- activejob (= 4.2.11.1)
126
- activemodel (= 4.2.11.1)
127
- activerecord (= 4.2.11.1)
128
- activesupport (= 4.2.11.1)
129
- bundler (>= 1.3.0, < 2.0)
130
- railties (= 4.2.11.1)
131
- sprockets-rails
132
- rails-deprecated_sanitizer (1.0.3)
133
- activesupport (>= 4.2.0.alpha)
134
- rails-dom-testing (1.0.9)
135
- activesupport (>= 4.2.0, < 5.0)
136
- nokogiri (~> 1.6)
137
- rails-deprecated_sanitizer (>= 1.0.1)
138
- rails-html-sanitizer (1.3.0)
139
- loofah (~> 2.3)
140
- railties (4.2.11.1)
141
- actionpack (= 4.2.11.1)
142
- activesupport (= 4.2.11.1)
143
- rake (>= 0.8.7)
144
- thor (>= 0.18.1, < 2.0)
145
- rainbow (2.2.2)
146
- rake
147
- rake (10.5.0)
148
- redis (3.3.5)
149
- rspec (3.9.0)
150
- rspec-core (~> 3.9.0)
151
- rspec-expectations (~> 3.9.0)
152
- rspec-mocks (~> 3.9.0)
153
- rspec-core (3.9.0)
154
- rspec-support (~> 3.9.0)
155
- rspec-expectations (3.9.0)
156
- diff-lcs (>= 1.2.0, < 2.0)
157
- rspec-support (~> 3.9.0)
158
- rspec-mocks (3.9.0)
159
- diff-lcs (>= 1.2.0, < 2.0)
160
- rspec-support (~> 3.9.0)
161
- rspec-support (3.9.0)
162
- rubocop (0.50.0)
163
- parallel (~> 1.10)
164
- parser (>= 2.3.3.1, < 3.0)
165
- powerpack (~> 0.1)
166
- rainbow (>= 2.2.2, < 3.0)
167
- ruby-progressbar (~> 1.7)
168
- unicode-display_width (~> 1.0, >= 1.0.1)
169
- ruby-progressbar (1.10.1)
170
- ruby2ruby (2.4.4)
171
- ruby_parser (~> 3.1)
172
- sexp_processor (~> 4.6)
173
- ruby_parser (3.14.0)
174
- sexp_processor (~> 4.9)
175
- rufus-scheduler (3.6.0)
176
- fugit (~> 1.1, >= 1.1.6)
177
- safe_yaml (1.0.5)
178
- sequel (5.27.0)
179
- sexp_processor (4.13.0)
180
- sinatra (1.4.8)
181
- rack (~> 1.5)
182
- rack-protection (~> 1.4)
183
- tilt (>= 1.3, < 3)
184
- sinatra-activerecord (2.0.14)
185
- activerecord (>= 3.2)
186
- sinatra (>= 1.0)
187
- sourcify (0.5.0)
188
- file-tail (>= 1.0.5)
189
- ruby2ruby (>= 1.2.5)
190
- ruby_parser (>= 2.0.5)
191
- sexp_processor (>= 3.0.5)
192
- sprockets (3.7.2)
193
- concurrent-ruby (~> 1.0)
194
- rack (> 1, < 3)
195
- sprockets-rails (3.2.1)
196
- actionpack (>= 4.0)
197
- activesupport (>= 4.0)
198
- sprockets (>= 3.0.0)
199
- sqlite3 (1.3.13)
200
- stackify-api-ruby (1.1.0)
201
- faraday (~> 0.8)
202
- google-protobuf (~> 3.0)
203
- net_http_unix (~> 0.2)
204
- thor (0.20.3)
205
- thread_safe (0.3.6)
206
- tilt (2.0.10)
207
- timecop (0.9.1)
208
- tins (1.22.2)
209
- to_bool (2.0.0)
210
- tzinfo (1.2.5)
211
- thread_safe (~> 0.1)
212
- unf (0.1.4)
213
- unf_ext
214
- unf_ext (0.0.7.6)
215
- unicode-display_width (1.6.0)
216
- webmock (3.7.6)
217
- addressable (>= 2.3.6)
218
- crack (>= 0.3.2)
219
- hashdiff (>= 0.4.0, < 2.0.0)
220
-
221
- PLATFORMS
222
- ruby
223
-
224
- DEPENDENCIES
225
- activerecord
226
- bundler (~> 1.16)
227
- curb (= 0.9.8)
228
- fakeredis
229
- google-protobuf (= 3.5.0)
230
- http
231
- httpclient
232
- mongo
233
- mysql2
234
- net_http_unix (~> 0.2)
235
- pg (~> 0.20)
236
- rack-test
237
- rails (~> 4.0)
238
- rake (~> 10.0)
239
- rspec (~> 3.0)
240
- rubocop
241
- sequel
242
- sinatra
243
- sinatra-activerecord
244
- sqlite3 (= 1.3.13)
245
- stackify-api-ruby
246
- stackify-ruby-apm!
247
- timecop
248
- to_bool
249
- webmock
250
-
251
- BUNDLED WITH
252
- 1.17.3