scout_apm 5.3.8 → 5.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/.github/workflows/release.yml +30 -0
- data/.github/workflows/test.yml +6 -12
- data/CHANGELOG.markdown +10 -1
- data/gems/sqlite3-v2.gemfile +3 -0
- data/lib/scout_apm/agent.rb +1 -1
- data/lib/scout_apm/background_job_integrations/good_job.rb +49 -0
- data/lib/scout_apm/background_job_integrations/resque.rb +13 -27
- data/lib/scout_apm/background_job_integrations/solid_queue.rb +47 -0
- data/lib/scout_apm/environment.rb +2 -0
- data/lib/scout_apm/instruments/grape.rb +1 -1
- data/lib/scout_apm/instruments/resque.rb +31 -2
- data/lib/scout_apm/utils/installed_gems.rb +2 -1
- data/lib/scout_apm/version.rb +1 -1
- data/lib/scout_apm.rb +2 -0
- data/scout_apm.gemspec +1 -1
- metadata +12 -81
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b3dfd72cdc46892ac46a974e4e3947f81ac2ee6580bee96c0cc6ad845ce50ee7
|
|
4
|
+
data.tar.gz: 560fb31452b8c5b526bf77723d121d561096c759640c0266ba894ffe71901d99
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3958265f12804e22dbb4c75d3b03a6d4ad9f87ff989e5382f8d0b890d55c2c2505828cd4022fa7a965092bb7c0948a12baea760b0d15fd05f5ceef6d1a23f962
|
|
7
|
+
data.tar.gz: cb45c1255f16f299e7a8cc67c93efd21fd7912682c4d4ed2030498be069022f2cf8811a987bbec0c22ff28150d57ff95222ed0771e0c2758bbba057b1805d4a8
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Release Gem
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
|
|
8
|
+
# Directly from https://github.com/rubygems/release-gem/tree/v1
|
|
9
|
+
# Predicated on Tag Ruleset preventing arbitrary tag creation and
|
|
10
|
+
# requiring checks to pass for commit before tag creation
|
|
11
|
+
jobs:
|
|
12
|
+
push:
|
|
13
|
+
name: Push gem to RubyGems.org
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
|
|
18
|
+
contents: write # IMPORTANT: this permission is required for `rake release` to push the release tag
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
# Set up
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
- name: Set up Ruby
|
|
24
|
+
uses: ruby/setup-ruby@v1
|
|
25
|
+
with:
|
|
26
|
+
bundler-cache: true
|
|
27
|
+
ruby-version: ruby
|
|
28
|
+
|
|
29
|
+
# Release
|
|
30
|
+
- uses: rubygems/release-gem@v1
|
data/.github/workflows/test.yml
CHANGED
|
@@ -7,7 +7,7 @@ jobs:
|
|
|
7
7
|
runs-on: ubuntu-latest
|
|
8
8
|
|
|
9
9
|
steps:
|
|
10
|
-
- uses: actions/checkout@
|
|
10
|
+
- uses: actions/checkout@v4
|
|
11
11
|
- uses: ruby/setup-ruby@v1
|
|
12
12
|
with:
|
|
13
13
|
bundler-cache: true
|
|
@@ -19,11 +19,6 @@ jobs:
|
|
|
19
19
|
fail-fast: false
|
|
20
20
|
matrix:
|
|
21
21
|
include:
|
|
22
|
-
- ruby: 2.1
|
|
23
|
-
gemfile: gems/rails3.gemfile
|
|
24
|
-
- ruby: 2.2
|
|
25
|
-
- ruby: 2.3
|
|
26
|
-
- ruby: 2.4
|
|
27
22
|
- ruby: 2.5
|
|
28
23
|
- ruby: 2.6
|
|
29
24
|
- ruby: 2.6
|
|
@@ -31,9 +26,6 @@ jobs:
|
|
|
31
26
|
test_features: "typhoeus"
|
|
32
27
|
- ruby: 2.6
|
|
33
28
|
gemfile: gems/octoshark.gemfile
|
|
34
|
-
- ruby: 2.6
|
|
35
|
-
gemfile: gems/rails3.gemfile
|
|
36
|
-
bundler: 1.17.3
|
|
37
29
|
- ruby: 2.7
|
|
38
30
|
- ruby: 2.7
|
|
39
31
|
prepend: true
|
|
@@ -52,16 +44,18 @@ jobs:
|
|
|
52
44
|
test_features: "sidekiq_install"
|
|
53
45
|
- ruby: 3.1
|
|
54
46
|
- ruby: 3.2
|
|
47
|
+
gemfile: gems/sqlite3-v2.gemfile
|
|
48
|
+
- ruby: 3.3
|
|
49
|
+
gemfile: gems/sqlite3-v2.gemfile
|
|
55
50
|
env:
|
|
56
51
|
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
|
|
57
52
|
SCOUT_TEST_FEATURES: ${{ matrix.test_features }}
|
|
58
53
|
SCOUT_USE_PREPEND: ${{ matrix.prepend }}
|
|
59
54
|
|
|
60
|
-
|
|
61
|
-
runs-on: ${{ matrix.ruby == '2.2' && 'ubuntu-20.04' || 'ubuntu-latest' }}
|
|
55
|
+
runs-on: ubuntu-latest
|
|
62
56
|
|
|
63
57
|
steps:
|
|
64
|
-
- uses: actions/checkout@
|
|
58
|
+
- uses: actions/checkout@v4
|
|
65
59
|
- uses: ruby/setup-ruby@v1
|
|
66
60
|
with:
|
|
67
61
|
bundler-cache: true
|
data/CHANGELOG.markdown
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Unreleased
|
|
2
2
|
|
|
3
|
+
# 5.5.0
|
|
4
|
+
- Fix undeclared logger in grape instruments (#510)
|
|
5
|
+
- Drop guaranteed support for Rubies <= 2.4
|
|
6
|
+
- Instrument Resque without relying on forking per job (#514)
|
|
7
|
+
|
|
8
|
+
# 5.4.0
|
|
9
|
+
* Add support for GoodJob (#506)
|
|
10
|
+
* Add support for Solid Queue (#508)
|
|
11
|
+
|
|
3
12
|
# 5.3.8
|
|
4
13
|
* Avoid inaccurate websocket queue time capturing (#494)
|
|
5
14
|
|
|
@@ -664,7 +673,7 @@ reusing that version number to avoid confusion.
|
|
|
664
673
|
|
|
665
674
|
# 1.2.12
|
|
666
675
|
|
|
667
|
-
* Add uri_reporting option to report bare path (as opposed to fullpath). Default is 'fullpath'; set to 'path' to avoid exposing URL parameters.
|
|
676
|
+
* Add uri_reporting option to report bare path (as opposed to fullpath). Default is 'fullpath'; set to 'path' to avoid exposing URL parameters.
|
|
668
677
|
|
|
669
678
|
# 1.2.11
|
|
670
679
|
|
data/lib/scout_apm/agent.rb
CHANGED
|
@@ -208,7 +208,7 @@ module ScoutApm
|
|
|
208
208
|
|
|
209
209
|
@error_service_background_worker = ScoutApm::BackgroundWorker.new(context, ERROR_SEND_FREQUENCY)
|
|
210
210
|
@error_service_background_worker_thread = Thread.new do
|
|
211
|
-
@error_service_background_worker.start {
|
|
211
|
+
@error_service_background_worker.start {
|
|
212
212
|
periodic_work.run
|
|
213
213
|
}
|
|
214
214
|
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module ScoutApm
|
|
2
|
+
module BackgroundJobIntegrations
|
|
3
|
+
class GoodJob
|
|
4
|
+
UNKNOWN_QUEUE_PLACEHOLDER = 'default'.freeze
|
|
5
|
+
attr_reader :logger
|
|
6
|
+
|
|
7
|
+
def name
|
|
8
|
+
:good_job
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def present?
|
|
12
|
+
defined?(::GoodJob::VERSION)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def forking?
|
|
16
|
+
false
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def install
|
|
20
|
+
ActiveSupport.on_load(:active_job) do
|
|
21
|
+
include ScoutApm::Tracer
|
|
22
|
+
|
|
23
|
+
around_perform do |job, block|
|
|
24
|
+
# I have a sneaking suspicion there is a better way to handle Agent starting
|
|
25
|
+
# Maybe hook into GoodJob lifecycle events?
|
|
26
|
+
req = ScoutApm::RequestManager.lookup
|
|
27
|
+
latency = Time.now - (job.scheduled_at || job.enqueued_at) rescue 0
|
|
28
|
+
req.annotate_request(queue_latency: latency)
|
|
29
|
+
|
|
30
|
+
begin
|
|
31
|
+
req.start_layer ScoutApm::Layer.new("Queue", job.queue_name.presence || UNKNOWN_QUEUE_PLACEHOLDER)
|
|
32
|
+
started_queue = true # Following Convention
|
|
33
|
+
req.start_layer ScoutApm::Layer.new("Job", job.class.name)
|
|
34
|
+
started_job = true # Following Convention
|
|
35
|
+
|
|
36
|
+
block.call
|
|
37
|
+
rescue
|
|
38
|
+
req.error!
|
|
39
|
+
raise
|
|
40
|
+
ensure
|
|
41
|
+
req.stop_layer if started_job
|
|
42
|
+
req.stop_layer if started_queue
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -7,8 +7,7 @@ module ScoutApm
|
|
|
7
7
|
|
|
8
8
|
def present?
|
|
9
9
|
defined?(::Resque) &&
|
|
10
|
-
::Resque.respond_to?(:before_first_fork)
|
|
11
|
-
::Resque.respond_to?(:after_fork)
|
|
10
|
+
::Resque.respond_to?(:before_first_fork)
|
|
12
11
|
end
|
|
13
12
|
|
|
14
13
|
# Lies. This forks really aggressively, but we have to do handling
|
|
@@ -19,13 +18,14 @@ module ScoutApm
|
|
|
19
18
|
end
|
|
20
19
|
|
|
21
20
|
def install
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
install_before_first_fork
|
|
22
|
+
install_instruments
|
|
24
23
|
end
|
|
25
24
|
|
|
26
|
-
def
|
|
25
|
+
def install_before_first_fork
|
|
27
26
|
::Resque.before_first_fork do
|
|
28
27
|
begin
|
|
28
|
+
# Don't check fork_per_job here in case some workers fork_per_job and some don't.
|
|
29
29
|
if ScoutApm::Agent.instance.context.config.value('start_resque_server_instrument')
|
|
30
30
|
ScoutApm::Agent.instance.start
|
|
31
31
|
ScoutApm::Agent.instance.context.start_remote_server!(bind, port)
|
|
@@ -33,31 +33,14 @@ module ScoutApm
|
|
|
33
33
|
logger.info("Not starting remote server due to 'start_resque_server_instrument' setting")
|
|
34
34
|
end
|
|
35
35
|
rescue Errno::EADDRINUSE
|
|
36
|
-
|
|
36
|
+
logger.warn "Error while Installing Resque Instruments, Port #{port} already in use. Set via the `remote_agent_port` configuration option"
|
|
37
37
|
rescue => e
|
|
38
|
-
|
|
38
|
+
logger.warn "Error while Installing Resque before_first_fork: #{e.inspect}"
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
def
|
|
44
|
-
::Resque.after_fork do
|
|
45
|
-
begin
|
|
46
|
-
ScoutApm::Agent.instance.context.become_remote_client!(bind, port)
|
|
47
|
-
inject_job_instrument
|
|
48
|
-
rescue => e
|
|
49
|
-
ScoutApm::Agent.instance.context.logger.warn "Error while Installing Resque after_fork: #{e.inspect}"
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# Insert ourselves into the point when resque turns a string "TestJob"
|
|
55
|
-
# into the class constant TestJob, and insert our instrumentation plugin
|
|
56
|
-
# into that constantized class
|
|
57
|
-
#
|
|
58
|
-
# This automates away any need for the user to insert our instrumentation into
|
|
59
|
-
# each of their jobs
|
|
60
|
-
def inject_job_instrument
|
|
43
|
+
def install_instruments
|
|
61
44
|
::Resque::Job.class_eval do
|
|
62
45
|
def payload_class_with_scout_instruments
|
|
63
46
|
klass = payload_class_without_scout_instruments
|
|
@@ -80,9 +63,12 @@ module ScoutApm
|
|
|
80
63
|
end
|
|
81
64
|
|
|
82
65
|
def config
|
|
83
|
-
@config
|
|
66
|
+
@config ||= ScoutApm::Agent.instance.context.config
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def logger
|
|
70
|
+
@logger ||= ScoutApm::Agent.instance.context.logger
|
|
84
71
|
end
|
|
85
72
|
end
|
|
86
73
|
end
|
|
87
74
|
end
|
|
88
|
-
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module ScoutApm
|
|
2
|
+
module BackgroundJobIntegrations
|
|
3
|
+
class SolidQueue
|
|
4
|
+
UNKNOWN_QUEUE_PLACEHOLDER = 'default'.freeze
|
|
5
|
+
attr_reader :logger
|
|
6
|
+
|
|
7
|
+
def name
|
|
8
|
+
:solid_queue
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def present?
|
|
12
|
+
defined?(::SolidQueue::VERSION)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def forking?
|
|
16
|
+
false
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def install
|
|
20
|
+
ActiveSupport.on_load(:active_job) do
|
|
21
|
+
include ScoutApm::Tracer
|
|
22
|
+
|
|
23
|
+
around_perform do |job, block|
|
|
24
|
+
req = ScoutApm::RequestManager.lookup
|
|
25
|
+
latency = Time.now - (job.scheduled_at || job.enqueued_at) rescue 0
|
|
26
|
+
req.annotate_request(queue_latency: latency)
|
|
27
|
+
|
|
28
|
+
begin
|
|
29
|
+
req.start_layer ScoutApm::Layer.new("Queue", job.queue_name.presence || UNKNOWN_QUEUE_PLACEHOLDER)
|
|
30
|
+
started_queue = true # Following Convention
|
|
31
|
+
req.start_layer ScoutApm::Layer.new("Job", job.class.name)
|
|
32
|
+
started_job = true # Following Convention
|
|
33
|
+
|
|
34
|
+
block.call
|
|
35
|
+
rescue
|
|
36
|
+
req.error!
|
|
37
|
+
raise
|
|
38
|
+
ensure
|
|
39
|
+
req.stop_layer if started_job
|
|
40
|
+
req.stop_layer if started_queue
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -31,6 +31,8 @@ module ScoutApm
|
|
|
31
31
|
ScoutApm::BackgroundJobIntegrations::DelayedJob.new,
|
|
32
32
|
ScoutApm::BackgroundJobIntegrations::Que.new,
|
|
33
33
|
ScoutApm::BackgroundJobIntegrations::Faktory.new,
|
|
34
|
+
ScoutApm::BackgroundJobIntegrations::GoodJob.new,
|
|
35
|
+
ScoutApm::BackgroundJobIntegrations::SolidQueue.new,
|
|
34
36
|
]
|
|
35
37
|
|
|
36
38
|
FRAMEWORK_INTEGRATIONS = [
|
|
@@ -53,7 +53,7 @@ module ScoutApm
|
|
|
53
53
|
self.options[:path].first,
|
|
54
54
|
].compact.map{ |n| n.to_s }.join("/")
|
|
55
55
|
rescue => e
|
|
56
|
-
logger.info("Error getting Grape Endpoint Name. Error: #{e.message}. Options: #{self.options.inspect}")
|
|
56
|
+
ScoutApm::Agent.instance.context.logger.info("Error getting Grape Endpoint Name. Error: #{e.message}. Options: #{self.options.inspect}")
|
|
57
57
|
name = "Grape/Unknown"
|
|
58
58
|
end
|
|
59
59
|
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
module ScoutApm
|
|
2
2
|
module Instruments
|
|
3
3
|
module Resque
|
|
4
|
+
def before_perform_become_client(*args)
|
|
5
|
+
# Don't become remote client if explicitly disabled or if forking is disabled to force synchronous recording.
|
|
6
|
+
if config.value('start_resque_server_instrument') && forking?
|
|
7
|
+
ScoutApm::Agent.instance.context.become_remote_client!(bind, port)
|
|
8
|
+
else
|
|
9
|
+
logger.debug("Not becoming remote client due to 'start_resque_server_instrument' setting or 'fork_per_job' setting")
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
4
13
|
def around_perform_with_scout_instruments(*args)
|
|
5
14
|
job_name = self.to_s
|
|
6
15
|
queue = find_queue
|
|
@@ -17,7 +26,6 @@ module ScoutApm
|
|
|
17
26
|
started_queue = true
|
|
18
27
|
req.start_layer(ScoutApm::Layer.new('Job', job_name))
|
|
19
28
|
started_job = true
|
|
20
|
-
|
|
21
29
|
yield
|
|
22
30
|
rescue => e
|
|
23
31
|
req.error!
|
|
@@ -33,7 +41,28 @@ module ScoutApm
|
|
|
33
41
|
return queue if self.respond_to?(:queue)
|
|
34
42
|
return "unknown"
|
|
35
43
|
end
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
|
|
47
|
+
def bind
|
|
48
|
+
config.value("remote_agent_host")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def port
|
|
52
|
+
config.value("remote_agent_port")
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def config
|
|
56
|
+
@config ||= ScoutApm::Agent.instance.context.config
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def logger
|
|
60
|
+
@logger ||= ScoutApm::Agent.instance.context.logger
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def forking?
|
|
64
|
+
@forking ||= ENV["FORK_PER_JOB"] != "false"
|
|
65
|
+
end
|
|
36
66
|
end
|
|
37
67
|
end
|
|
38
68
|
end
|
|
39
|
-
|
|
@@ -12,7 +12,8 @@ module ScoutApm
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def run
|
|
15
|
-
Bundler.rubygems.
|
|
15
|
+
specs = Bundler.rubygems.public_send(Bundler.rubygems.respond_to?(:installed_specs) ? :installed_specs : :all_specs)
|
|
16
|
+
specs.map { |spec| [spec.name, spec.version.to_s] }
|
|
16
17
|
rescue => e
|
|
17
18
|
logger.warn("Couldn't fetch Gem information: #{e.message}")
|
|
18
19
|
[]
|
data/lib/scout_apm/version.rb
CHANGED
data/lib/scout_apm.rb
CHANGED
|
@@ -67,6 +67,8 @@ require 'scout_apm/background_job_integrations/shoryuken'
|
|
|
67
67
|
require 'scout_apm/background_job_integrations/sneakers'
|
|
68
68
|
require 'scout_apm/background_job_integrations/que'
|
|
69
69
|
require 'scout_apm/background_job_integrations/legacy_sneakers'
|
|
70
|
+
require 'scout_apm/background_job_integrations/good_job'
|
|
71
|
+
require 'scout_apm/background_job_integrations/solid_queue'
|
|
70
72
|
|
|
71
73
|
require 'scout_apm/framework_integrations/rails_2'
|
|
72
74
|
require 'scout_apm/framework_integrations/rails_3_or_4'
|
data/scout_apm.gemspec
CHANGED
|
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
|
|
|
34
34
|
# tests. Specific versions are pulled in using specific gemfiles, e.g.
|
|
35
35
|
# `gems/rails3.gemfile`.
|
|
36
36
|
s.add_development_dependency "activerecord"
|
|
37
|
-
s.add_development_dependency "sqlite3"
|
|
37
|
+
s.add_development_dependency "sqlite3", "~> 1.4"
|
|
38
38
|
|
|
39
39
|
s.add_development_dependency "rubocop"
|
|
40
40
|
s.add_development_dependency "guard"
|
metadata
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: scout_apm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Derek Haynes
|
|
8
8
|
- Andre Lewis
|
|
9
|
-
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2025-01-02 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: minitest
|
|
@@ -141,16 +140,16 @@ dependencies:
|
|
|
141
140
|
name: sqlite3
|
|
142
141
|
requirement: !ruby/object:Gem::Requirement
|
|
143
142
|
requirements:
|
|
144
|
-
- - "
|
|
143
|
+
- - "~>"
|
|
145
144
|
- !ruby/object:Gem::Version
|
|
146
|
-
version: '
|
|
145
|
+
version: '1.4'
|
|
147
146
|
type: :development
|
|
148
147
|
prerelease: false
|
|
149
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
150
149
|
requirements:
|
|
151
|
-
- - "
|
|
150
|
+
- - "~>"
|
|
152
151
|
- !ruby/object:Gem::Version
|
|
153
|
-
version: '
|
|
152
|
+
version: '1.4'
|
|
154
153
|
- !ruby/object:Gem::Dependency
|
|
155
154
|
name: rubocop
|
|
156
155
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -216,6 +215,7 @@ extensions:
|
|
|
216
215
|
- ext/rusage/extconf.rb
|
|
217
216
|
extra_rdoc_files: []
|
|
218
217
|
files:
|
|
218
|
+
- ".github/workflows/release.yml"
|
|
219
219
|
- ".github/workflows/test.yml"
|
|
220
220
|
- ".gitignore"
|
|
221
221
|
- ".rubocop.yml"
|
|
@@ -239,6 +239,7 @@ files:
|
|
|
239
239
|
- gems/rails5.gemfile
|
|
240
240
|
- gems/rails6.gemfile
|
|
241
241
|
- gems/sidekiq.gemfile
|
|
242
|
+
- gems/sqlite3-v2.gemfile
|
|
242
243
|
- gems/typhoeus.gemfile
|
|
243
244
|
- lib/scout_apm.rb
|
|
244
245
|
- lib/scout_apm/agent.rb
|
|
@@ -254,12 +255,14 @@ files:
|
|
|
254
255
|
- lib/scout_apm/auto_instrument/rails.rb
|
|
255
256
|
- lib/scout_apm/background_job_integrations/delayed_job.rb
|
|
256
257
|
- lib/scout_apm/background_job_integrations/faktory.rb
|
|
258
|
+
- lib/scout_apm/background_job_integrations/good_job.rb
|
|
257
259
|
- lib/scout_apm/background_job_integrations/legacy_sneakers.rb
|
|
258
260
|
- lib/scout_apm/background_job_integrations/que.rb
|
|
259
261
|
- lib/scout_apm/background_job_integrations/resque.rb
|
|
260
262
|
- lib/scout_apm/background_job_integrations/shoryuken.rb
|
|
261
263
|
- lib/scout_apm/background_job_integrations/sidekiq.rb
|
|
262
264
|
- lib/scout_apm/background_job_integrations/sneakers.rb
|
|
265
|
+
- lib/scout_apm/background_job_integrations/solid_queue.rb
|
|
263
266
|
- lib/scout_apm/background_recorder.rb
|
|
264
267
|
- lib/scout_apm/background_worker.rb
|
|
265
268
|
- lib/scout_apm/bucket_name_splitter.rb
|
|
@@ -485,7 +488,6 @@ homepage: https://github.com/scoutapp/scout_apm_ruby
|
|
|
485
488
|
licenses:
|
|
486
489
|
- MIT
|
|
487
490
|
metadata: {}
|
|
488
|
-
post_install_message:
|
|
489
491
|
rdoc_options: []
|
|
490
492
|
require_paths:
|
|
491
493
|
- lib
|
|
@@ -501,78 +503,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
501
503
|
- !ruby/object:Gem::Version
|
|
502
504
|
version: '0'
|
|
503
505
|
requirements: []
|
|
504
|
-
rubygems_version: 3.
|
|
505
|
-
signing_key:
|
|
506
|
+
rubygems_version: 3.6.2
|
|
506
507
|
specification_version: 4
|
|
507
508
|
summary: Ruby application performance monitoring
|
|
508
|
-
test_files:
|
|
509
|
-
- test/data/config_test_1.yml
|
|
510
|
-
- test/test_helper.rb
|
|
511
|
-
- test/tmp/README.md
|
|
512
|
-
- test/unit/agent_context_test.rb
|
|
513
|
-
- test/unit/agent_test.rb
|
|
514
|
-
- test/unit/auto_instrument/anonymous_block_value.rb
|
|
515
|
-
- test/unit/auto_instrument/assignments-instrumented.rb
|
|
516
|
-
- test/unit/auto_instrument/assignments.rb
|
|
517
|
-
- test/unit/auto_instrument/controller-ast.txt
|
|
518
|
-
- test/unit/auto_instrument/controller-instrumented.rb
|
|
519
|
-
- test/unit/auto_instrument/controller.rb
|
|
520
|
-
- test/unit/auto_instrument/hanging_method.rb
|
|
521
|
-
- test/unit/auto_instrument/hash_shorthand_controller-instrumented.rb
|
|
522
|
-
- test/unit/auto_instrument/hash_shorthand_controller.rb
|
|
523
|
-
- test/unit/auto_instrument/rescue_from-instrumented.rb
|
|
524
|
-
- test/unit/auto_instrument/rescue_from.rb
|
|
525
|
-
- test/unit/auto_instrument_test.rb
|
|
526
|
-
- test/unit/background_job_integrations/sidekiq_test.rb
|
|
527
|
-
- test/unit/config_test.rb
|
|
528
|
-
- test/unit/context_test.rb
|
|
529
|
-
- test/unit/db_query_metric_set_test.rb
|
|
530
|
-
- test/unit/db_query_metric_stats_test.rb
|
|
531
|
-
- test/unit/environment_test.rb
|
|
532
|
-
- test/unit/error_service/error_buffer_test.rb
|
|
533
|
-
- test/unit/error_service/ignored_exceptions_test.rb
|
|
534
|
-
- test/unit/extensions/periodic_callbacks_test.rb
|
|
535
|
-
- test/unit/extensions/transaction_callbacks_test.rb
|
|
536
|
-
- test/unit/external_service_metric_set_test.rb
|
|
537
|
-
- test/unit/external_service_metric_stats_test.rb
|
|
538
|
-
- test/unit/fake_store_test.rb
|
|
539
|
-
- test/unit/git_revision_test.rb
|
|
540
|
-
- test/unit/histogram_test.rb
|
|
541
|
-
- test/unit/ignored_uris_test.rb
|
|
542
|
-
- test/unit/instruments/action_view_test.rb
|
|
543
|
-
- test/unit/instruments/active_record_test.rb
|
|
544
|
-
- test/unit/instruments/fixtures/test/_test_partial.html.erb
|
|
545
|
-
- test/unit/instruments/fixtures/test/_test_partial_collection.html.erb
|
|
546
|
-
- test/unit/instruments/fixtures/test_view.html.erb
|
|
547
|
-
- test/unit/instruments/http_client_test.rb
|
|
548
|
-
- test/unit/instruments/http_test.rb
|
|
549
|
-
- test/unit/instruments/moped_test.rb
|
|
550
|
-
- test/unit/instruments/net_http_test.rb
|
|
551
|
-
- test/unit/instruments/percentile_sampler_test.rb
|
|
552
|
-
- test/unit/instruments/redis_test.rb
|
|
553
|
-
- test/unit/instruments/typhoeus_test.rb
|
|
554
|
-
- test/unit/layaway_test.rb
|
|
555
|
-
- test/unit/layer_children_set_test.rb
|
|
556
|
-
- test/unit/layer_converters/depth_first_walker_test.rb
|
|
557
|
-
- test/unit/layer_converters/metric_converter_test.rb
|
|
558
|
-
- test/unit/layer_converters/stubs.rb
|
|
559
|
-
- test/unit/limited_layer_test.rb
|
|
560
|
-
- test/unit/logger_test.rb
|
|
561
|
-
- test/unit/metric_set_test.rb
|
|
562
|
-
- test/unit/remote/message_test.rb
|
|
563
|
-
- test/unit/remote/route_test.rb
|
|
564
|
-
- test/unit/remote/server_test.rb
|
|
565
|
-
- test/unit/request_histograms_test.rb
|
|
566
|
-
- test/unit/scored_item_set_test.rb
|
|
567
|
-
- test/unit/serializers/payload_serializer_test.rb
|
|
568
|
-
- test/unit/slow_request_policy_test.rb
|
|
569
|
-
- test/unit/sql_sanitizer_test.rb
|
|
570
|
-
- test/unit/store_test.rb
|
|
571
|
-
- test/unit/tracer_test.rb
|
|
572
|
-
- test/unit/tracked_request_test.rb
|
|
573
|
-
- test/unit/transaction_test.rb
|
|
574
|
-
- test/unit/transaction_time_consumed_test.rb
|
|
575
|
-
- test/unit/utils/active_record_metric_name_test.rb
|
|
576
|
-
- test/unit/utils/backtrace_parser_test.rb
|
|
577
|
-
- test/unit/utils/numbers_test.rb
|
|
578
|
-
- test/unit/utils/scm.rb
|
|
509
|
+
test_files: []
|