scout_apm 5.3.8 → 5.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|