signalfx-rails-instrumentation 0.1.0 → 0.2.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 +5 -5
- data/.gitignore +2 -7
- data/.rubocop.yml +42 -0
- data/Appraisals +16 -13
- data/Gemfile +3 -7
- data/Gemfile.lock +173 -0
- data/LICENSE +2 -2
- data/README.md +118 -164
- data/Rakefile +6 -6
- data/bin/console +1 -1
- data/lib/rails/instrumentation.rb +60 -0
- data/lib/rails/instrumentation/patch.rb +38 -0
- data/lib/rails/instrumentation/subscriber.rb +45 -0
- data/lib/rails/instrumentation/subscribers/action_cable_subscriber.rb +69 -0
- data/lib/rails/instrumentation/subscribers/action_controller_subscriber.rb +172 -0
- data/lib/rails/instrumentation/subscribers/action_mailer_subscriber.rb +63 -0
- data/lib/rails/instrumentation/subscribers/action_view_subscriber.rb +48 -0
- data/lib/rails/instrumentation/subscribers/active_job_subscriber.rb +58 -0
- data/lib/rails/instrumentation/subscribers/active_record_subscriber.rb +45 -0
- data/lib/rails/instrumentation/subscribers/active_storage_subscriber.rb +91 -0
- data/lib/rails/instrumentation/subscribers/active_support_subscriber.rb +74 -0
- data/lib/rails/instrumentation/utils.rb +44 -0
- data/lib/rails/instrumentation/version.rb +5 -0
- data/rails-instrumentation.gemspec +32 -0
- metadata +54 -192
- data/.rspec +0 -2
- data/.ruby-version +0 -1
- data/.travis.yml +0 -25
- data/CHANGELOG.md +0 -47
- data/docker-compose.yml +0 -4
- data/gemfiles/.bundle/config +0 -2
- data/gemfiles/rails_32.gemfile +0 -11
- data/gemfiles/rails_4.gemfile +0 -10
- data/gemfiles/rails_40.gemfile +0 -10
- data/gemfiles/rails_41.gemfile +0 -10
- data/gemfiles/rails_42.gemfile +0 -10
- data/gemfiles/rails_5.gemfile +0 -10
- data/gemfiles/rails_50.gemfile +0 -10
- data/gemfiles/rails_51.gemfile +0 -10
- data/lib/rails-tracer.rb +0 -1
- data/lib/rails/action_controller/tracer.rb +0 -100
- data/lib/rails/action_view/tracer.rb +0 -105
- data/lib/rails/active_record/tracer.rb +0 -89
- data/lib/rails/active_support/cache/core_ext.rb +0 -11
- data/lib/rails/active_support/cache/dalli_tracer.rb +0 -106
- data/lib/rails/active_support/cache/manual_tracer.rb +0 -24
- data/lib/rails/active_support/cache/subscriber.rb +0 -62
- data/lib/rails/active_support/cache/tracer.rb +0 -55
- data/lib/rails/defer_notifications.rb +0 -78
- data/lib/rails/rack/tracer.rb +0 -61
- data/lib/rails/span_helpers.rb +0 -24
- data/lib/rails/tracer.rb +0 -38
- data/rails-tracer.gemspec +0 -44
@@ -0,0 +1,48 @@
|
|
1
|
+
module Rails
|
2
|
+
module Instrumentation
|
3
|
+
module ActionViewSubscriber
|
4
|
+
include Subscriber
|
5
|
+
|
6
|
+
EVENT_NAMESPACE = 'action_view'.freeze
|
7
|
+
|
8
|
+
EVENTS = %w[
|
9
|
+
render_template
|
10
|
+
render_partial
|
11
|
+
render_collection
|
12
|
+
].freeze
|
13
|
+
|
14
|
+
# rubocop:disable Style/MutableConstant
|
15
|
+
BASE_TAGS = { 'component' => 'ActionView' }
|
16
|
+
# rubocop:enable Style/MutableConstant.
|
17
|
+
|
18
|
+
class << self
|
19
|
+
def render_template(event)
|
20
|
+
tags = span_tags(
|
21
|
+
'template.identifier' => event.payload[:identifier],
|
22
|
+
'template.layout' => event.payload[:layout]
|
23
|
+
)
|
24
|
+
|
25
|
+
Utils.trace_notification(event: event, tags: tags)
|
26
|
+
end
|
27
|
+
|
28
|
+
def render_partial(event)
|
29
|
+
tags = span_tags(
|
30
|
+
'partial.identifier' => event.payload[:identifier]
|
31
|
+
)
|
32
|
+
|
33
|
+
Utils.trace_notification(event: event, tags: tags)
|
34
|
+
end
|
35
|
+
|
36
|
+
def render_collection(event)
|
37
|
+
tags = span_tags(
|
38
|
+
'template.identifier' => event.payload[:identifier],
|
39
|
+
'template.count' => event.payload[:count]
|
40
|
+
)
|
41
|
+
tags['template.cache_hits'] = event.payload[:cache_hits] if event.payload.key? :cache_hits
|
42
|
+
|
43
|
+
Utils.trace_notification(event: event, tags: tags)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Rails
|
2
|
+
module Instrumentation
|
3
|
+
module ActiveJobSubscriber
|
4
|
+
include Subscriber
|
5
|
+
|
6
|
+
EVENT_NAMESPACE = 'active_job'.freeze
|
7
|
+
|
8
|
+
EVENTS = %w[
|
9
|
+
enqueue_at
|
10
|
+
enqueue
|
11
|
+
perform_start
|
12
|
+
perform
|
13
|
+
].freeze
|
14
|
+
|
15
|
+
# rubocop:disable Style/MutableConstant
|
16
|
+
BASE_TAGS = { 'component' => 'ActiveJob' }
|
17
|
+
# rubocop:enable Style/MutableConstant.
|
18
|
+
|
19
|
+
class << self
|
20
|
+
def enqueue_at(event)
|
21
|
+
tags = span_tags(
|
22
|
+
'adapter' => event.payload[:adapter],
|
23
|
+
'job' => event.payload[:job]
|
24
|
+
)
|
25
|
+
|
26
|
+
Utils.trace_notification(event: event, tags: tags)
|
27
|
+
end
|
28
|
+
|
29
|
+
def enqueue(event)
|
30
|
+
tags = span_tags(
|
31
|
+
'adapter' => event.payload[:adapter],
|
32
|
+
'job' => event.payload[:job]
|
33
|
+
)
|
34
|
+
|
35
|
+
Utils.trace_notification(event: event, tags: tags)
|
36
|
+
end
|
37
|
+
|
38
|
+
def perform_start(event)
|
39
|
+
tags = span_tags(
|
40
|
+
'adapter' => event.payload[:adapter],
|
41
|
+
'job' => event.payload[:job]
|
42
|
+
)
|
43
|
+
|
44
|
+
Utils.trace_notification(event: event, tags: tags)
|
45
|
+
end
|
46
|
+
|
47
|
+
def perform(event)
|
48
|
+
tags = span_tags(
|
49
|
+
'adapter' => event.payload[:adapter],
|
50
|
+
'job' => event.payload[:job]
|
51
|
+
)
|
52
|
+
|
53
|
+
Utils.trace_notification(event: event, tags: tags)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# require 'active_support'
|
2
|
+
|
3
|
+
module Rails
|
4
|
+
module Instrumentation
|
5
|
+
module ActiveRecordSubscriber
|
6
|
+
include Subscriber
|
7
|
+
|
8
|
+
EVENT_NAMESPACE = 'active_record'.freeze
|
9
|
+
|
10
|
+
EVENTS = %w[
|
11
|
+
sql
|
12
|
+
instantiation
|
13
|
+
].freeze
|
14
|
+
|
15
|
+
# rubocop:disable Style/MutableConstant
|
16
|
+
BASE_TAGS = { 'component' => 'ActiveRecord' }
|
17
|
+
# rubocop:enable Style/MutableConstant.
|
18
|
+
|
19
|
+
class << self
|
20
|
+
def sql(event)
|
21
|
+
raw = event.payload[:sql]
|
22
|
+
statement = raw.respond_to?(:to_str) ? raw : raw.to_s
|
23
|
+
tags = span_tags(
|
24
|
+
'db.statement' => statement[0, 1024],
|
25
|
+
'name' => event.payload[:name],
|
26
|
+
'connection_id' => event.payload[:connection_id],
|
27
|
+
'binds' => event.payload[:binds],
|
28
|
+
'cached' => event.payload[:cached]
|
29
|
+
)
|
30
|
+
|
31
|
+
Utils.trace_notification(event: event, tags: tags)
|
32
|
+
end
|
33
|
+
|
34
|
+
def instantiation(event)
|
35
|
+
tags = span_tags(
|
36
|
+
'record.count' => event.payload[:record_count],
|
37
|
+
'record.class' => event.payload[:class_name]
|
38
|
+
)
|
39
|
+
|
40
|
+
Utils.trace_notification(event: event, tags: tags)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module Rails
|
2
|
+
module Instrumentation
|
3
|
+
module ActiveStorageSubscriber
|
4
|
+
include Subscriber
|
5
|
+
|
6
|
+
EVENT_NAMESPACE = 'active_storage'.freeze
|
7
|
+
|
8
|
+
EVENTS = %w[
|
9
|
+
service_upload
|
10
|
+
service_streaming_download
|
11
|
+
service_download
|
12
|
+
service_delete
|
13
|
+
service_delete_prefixed
|
14
|
+
service_exist
|
15
|
+
service_url
|
16
|
+
].freeze
|
17
|
+
|
18
|
+
# rubocop:disable Style/MutableConstant
|
19
|
+
BASE_TAGS = { 'component' => 'ActiveStorage' }
|
20
|
+
# rubocop:enable Style/MutableConstant.
|
21
|
+
|
22
|
+
class << self
|
23
|
+
def service_upload(event)
|
24
|
+
tags = span_tags(
|
25
|
+
'key' => event.payload[:key],
|
26
|
+
'service' => event.payload[:service],
|
27
|
+
'checksum' => event.payload[:checksum]
|
28
|
+
)
|
29
|
+
|
30
|
+
Utils.trace_notification(event: event, tags: tags)
|
31
|
+
end
|
32
|
+
|
33
|
+
def service_streaming_download(event)
|
34
|
+
tags = span_tags(
|
35
|
+
'key' => event.payload[:key],
|
36
|
+
'service' => event.payload[:service]
|
37
|
+
)
|
38
|
+
|
39
|
+
Utils.trace_notification(event: event, tags: tags)
|
40
|
+
end
|
41
|
+
|
42
|
+
def service_download(event)
|
43
|
+
tags = span_tags(
|
44
|
+
'key' => event.payload[:key],
|
45
|
+
'service' => event.payload[:service]
|
46
|
+
)
|
47
|
+
|
48
|
+
Utils.trace_notification(event: event, tags: tags)
|
49
|
+
end
|
50
|
+
|
51
|
+
def service_delete(event)
|
52
|
+
tags = span_tags(
|
53
|
+
'key' => event.payload[:key],
|
54
|
+
'service' => event.payload[:service]
|
55
|
+
)
|
56
|
+
|
57
|
+
Utils.trace_notification(event: event, tags: tags)
|
58
|
+
end
|
59
|
+
|
60
|
+
def service_delete_prefixed(event)
|
61
|
+
tags = span_tags(
|
62
|
+
'key.prefix' => event.payload[:prefix],
|
63
|
+
'service' => event.payload[:service]
|
64
|
+
)
|
65
|
+
|
66
|
+
Utils.trace_notification(event: event, tags: tags)
|
67
|
+
end
|
68
|
+
|
69
|
+
def service_exist(event)
|
70
|
+
tags = span_tags(
|
71
|
+
'key' => event.payload[:key],
|
72
|
+
'service' => event.payload[:service],
|
73
|
+
'exist' => event.payload[:exist]
|
74
|
+
)
|
75
|
+
|
76
|
+
Utils.trace_notification(event: event, tags: tags)
|
77
|
+
end
|
78
|
+
|
79
|
+
def service_url(event)
|
80
|
+
tags = span_tags(
|
81
|
+
'key' => event.payload[:key],
|
82
|
+
'service' => event.payload[:service],
|
83
|
+
'url' => event.payload[:url] # generated url, not accessed url
|
84
|
+
)
|
85
|
+
|
86
|
+
Utils.trace_notification(event: event, tags: tags)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module Rails
|
2
|
+
module Instrumentation
|
3
|
+
module ActiveSupportSubscriber
|
4
|
+
include Subscriber
|
5
|
+
|
6
|
+
EVENT_NAMESPACE = 'active_support'.freeze
|
7
|
+
|
8
|
+
EVENTS = %w[
|
9
|
+
cache_read
|
10
|
+
cache_generate
|
11
|
+
cache_fetch_hit
|
12
|
+
cache_write
|
13
|
+
cache_delete
|
14
|
+
cache_exist?
|
15
|
+
].freeze
|
16
|
+
|
17
|
+
# rubocop:disable Style/MutableConstant
|
18
|
+
BASE_TAGS = { 'component' => 'ActiveSupport' }
|
19
|
+
# rubocop:enable Style/MutableConstant.
|
20
|
+
|
21
|
+
class << self
|
22
|
+
def cache_read(event)
|
23
|
+
tags = span_tags(
|
24
|
+
'key' => event.payload[:key],
|
25
|
+
'hit' => event.payload[:hit],
|
26
|
+
'super_operation' => event.payload[:super_operation]
|
27
|
+
)
|
28
|
+
|
29
|
+
Utils.trace_notification(event: event, tags: tags)
|
30
|
+
end
|
31
|
+
|
32
|
+
def cache_generate(event)
|
33
|
+
tags = span_tags(
|
34
|
+
'key' => event.payload[:key]
|
35
|
+
)
|
36
|
+
|
37
|
+
Utils.trace_notification(event: event, tags: tags)
|
38
|
+
end
|
39
|
+
|
40
|
+
def cache_fetch_hit(event)
|
41
|
+
tags = span_tags(
|
42
|
+
'key' => event.payload[:key]
|
43
|
+
)
|
44
|
+
|
45
|
+
Utils.trace_notification(event: event, tags: tags)
|
46
|
+
end
|
47
|
+
|
48
|
+
def cache_write(event)
|
49
|
+
tags = span_tags(
|
50
|
+
'key' => event.payload[:key]
|
51
|
+
)
|
52
|
+
|
53
|
+
Utils.trace_notification(event: event, tags: tags)
|
54
|
+
end
|
55
|
+
|
56
|
+
def cache_delete(event)
|
57
|
+
tags = span_tags(
|
58
|
+
'key' => event.payload[:key]
|
59
|
+
)
|
60
|
+
|
61
|
+
Utils.trace_notification(event: event, tags: tags)
|
62
|
+
end
|
63
|
+
|
64
|
+
def cache_exist?(event)
|
65
|
+
tags = span_tags(
|
66
|
+
'key' => event.payload[:key]
|
67
|
+
)
|
68
|
+
|
69
|
+
Utils.trace_notification(event: event, tags: tags)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'active_support/notifications'
|
2
|
+
|
3
|
+
module Rails
|
4
|
+
module Instrumentation
|
5
|
+
module Utils
|
6
|
+
class << self
|
7
|
+
# calls a handler function with name 'event' on the handler module.
|
8
|
+
# For example, if the handler module is ActionViewSubscriber and the
|
9
|
+
# event hook is 'render_template.action_controller', full_name is
|
10
|
+
# 'render_template.action_controller' and event_name is 'render_template'
|
11
|
+
def register_subscriber(full_name: '', event_name: '', handler_module: nil)
|
12
|
+
::ActiveSupport::Notifications.subscribe(full_name) do |*args|
|
13
|
+
event = ::ActiveSupport::Notifications::Event.new(*args)
|
14
|
+
handler_module.send(event_name, event)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# takes and event and some set of tags from a handler, and creates a
|
19
|
+
# span with the event's name and the start and finish times.
|
20
|
+
def trace_notification(event:, tags: [])
|
21
|
+
tags = ::Rails::Instrumentation::TAGS.clone.merge(tags)
|
22
|
+
|
23
|
+
span = ::Rails::Instrumentation.tracer.start_span(event.name,
|
24
|
+
tags: tags,
|
25
|
+
start_time: event.time)
|
26
|
+
|
27
|
+
# tag transaction_id
|
28
|
+
span.set_tag('transaction.id', event.transaction_id)
|
29
|
+
tag_error(span, event.payload) if event.payload.key? :exception_object
|
30
|
+
|
31
|
+
span.finish(end_time: event.end)
|
32
|
+
end
|
33
|
+
|
34
|
+
# according to the ActiveSupport::Notifications documentation, exceptions
|
35
|
+
# will be indicated with the presence of the :exception and :exception_object
|
36
|
+
# keys. These will be tagged and logged according to the OpenTracing
|
37
|
+
# specification.
|
38
|
+
def tag_error(span, payload)
|
39
|
+
span.record_exception(payload[:exception_object])
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'rails/instrumentation/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'signalfx-rails-instrumentation'
|
7
|
+
spec.version = Rails::Instrumentation::VERSION
|
8
|
+
spec.authors = ['Ashwin Chandrasekar']
|
9
|
+
spec.email = ['achandrasekar@signalfx.com']
|
10
|
+
|
11
|
+
spec.summary = 'OpenTracing instrumentation for Rails.'
|
12
|
+
spec.homepage = 'https://github.com/signalfx/ruby-rails-instrumentation'
|
13
|
+
|
14
|
+
# Specify which files should be added to the gem when it is released.
|
15
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
16
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
17
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
end
|
19
|
+
spec.bindir = 'exe'
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ['lib']
|
22
|
+
|
23
|
+
spec.add_dependency 'opentracing', '~> 0.3'
|
24
|
+
spec.add_development_dependency 'appraisal', '~> 2.2'
|
25
|
+
spec.add_development_dependency 'bundler', '>= 1.17'
|
26
|
+
spec.add_development_dependency 'signalfx_test_tracer', '>= 0.1.2'
|
27
|
+
spec.add_development_dependency 'rails', '~> 5.2.2'
|
28
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
29
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
30
|
+
spec.add_development_dependency 'rubocop', '~> 0.63.0'
|
31
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.31'
|
32
|
+
end
|
metadata
CHANGED
@@ -1,195 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: signalfx-rails-instrumentation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- Ashwin Chandrasekar
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opentracing
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.3.1
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.3.1
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rack-tracer
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.3.0
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.3.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: sqlite3
|
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: puma
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '3.7'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
16
|
requirements:
|
66
17
|
- - "~>"
|
67
18
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3
|
69
|
-
|
70
|
-
name: rspec-rails
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '3.6'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '3.6'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: database_cleaner
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '1.6'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '1.6'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: dalli
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 2.7.6
|
104
|
-
type: :development
|
19
|
+
version: '0.3'
|
20
|
+
type: :runtime
|
105
21
|
prerelease: false
|
106
22
|
version_requirements: !ruby/object:Gem::Requirement
|
107
23
|
requirements:
|
108
24
|
- - "~>"
|
109
25
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
26
|
+
version: '0.3'
|
111
27
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
28
|
+
name: appraisal
|
113
29
|
requirement: !ruby/object:Gem::Requirement
|
114
30
|
requirements:
|
115
31
|
- - "~>"
|
116
32
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
33
|
+
version: '2.2'
|
118
34
|
type: :development
|
119
35
|
prerelease: false
|
120
36
|
version_requirements: !ruby/object:Gem::Requirement
|
121
37
|
requirements:
|
122
38
|
- - "~>"
|
123
39
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
40
|
+
version: '2.2'
|
125
41
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
42
|
+
name: bundler
|
127
43
|
requirement: !ruby/object:Gem::Requirement
|
128
44
|
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '1.0'
|
132
45
|
- - ">="
|
133
46
|
- !ruby/object:Gem::Version
|
134
|
-
version: 1.
|
47
|
+
version: '1.17'
|
135
48
|
type: :development
|
136
49
|
prerelease: false
|
137
50
|
version_requirements: !ruby/object:Gem::Requirement
|
138
51
|
requirements:
|
139
|
-
- - "~>"
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '1.0'
|
142
52
|
- - ">="
|
143
53
|
- !ruby/object:Gem::Version
|
144
|
-
version: 1.
|
54
|
+
version: '1.17'
|
145
55
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
56
|
+
name: signalfx_test_tracer
|
147
57
|
requirement: !ruby/object:Gem::Requirement
|
148
58
|
requirements:
|
149
|
-
- - "~>"
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
version: '1.0'
|
152
59
|
- - ">="
|
153
60
|
- !ruby/object:Gem::Version
|
154
|
-
version: 1.
|
61
|
+
version: 0.1.2
|
155
62
|
type: :development
|
156
63
|
prerelease: false
|
157
64
|
version_requirements: !ruby/object:Gem::Requirement
|
158
65
|
requirements:
|
159
|
-
- - "~>"
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
version: '1.0'
|
162
66
|
- - ">="
|
163
67
|
- !ruby/object:Gem::Version
|
164
|
-
version: 1.
|
68
|
+
version: 0.1.2
|
165
69
|
- !ruby/object:Gem::Dependency
|
166
|
-
name:
|
70
|
+
name: rails
|
167
71
|
requirement: !ruby/object:Gem::Requirement
|
168
72
|
requirements:
|
169
73
|
- - "~>"
|
170
74
|
- !ruby/object:Gem::Version
|
171
|
-
version:
|
75
|
+
version: 5.2.2
|
172
76
|
type: :development
|
173
77
|
prerelease: false
|
174
78
|
version_requirements: !ruby/object:Gem::Requirement
|
175
79
|
requirements:
|
176
80
|
- - "~>"
|
177
81
|
- !ruby/object:Gem::Version
|
178
|
-
version:
|
179
|
-
- !ruby/object:Gem::Dependency
|
180
|
-
name: bundler
|
181
|
-
requirement: !ruby/object:Gem::Requirement
|
182
|
-
requirements:
|
183
|
-
- - "~>"
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
version: '1.15'
|
186
|
-
type: :development
|
187
|
-
prerelease: false
|
188
|
-
version_requirements: !ruby/object:Gem::Requirement
|
189
|
-
requirements:
|
190
|
-
- - "~>"
|
191
|
-
- !ruby/object:Gem::Version
|
192
|
-
version: '1.15'
|
82
|
+
version: 5.2.2
|
193
83
|
- !ruby/object:Gem::Dependency
|
194
84
|
name: rake
|
195
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -219,95 +109,68 @@ dependencies:
|
|
219
109
|
- !ruby/object:Gem::Version
|
220
110
|
version: '3.0'
|
221
111
|
- !ruby/object:Gem::Dependency
|
222
|
-
name:
|
223
|
-
requirement: !ruby/object:Gem::Requirement
|
224
|
-
requirements:
|
225
|
-
- - ">="
|
226
|
-
- !ruby/object:Gem::Version
|
227
|
-
version: '0'
|
228
|
-
type: :development
|
229
|
-
prerelease: false
|
230
|
-
version_requirements: !ruby/object:Gem::Requirement
|
231
|
-
requirements:
|
232
|
-
- - ">="
|
233
|
-
- !ruby/object:Gem::Version
|
234
|
-
version: '0'
|
235
|
-
- !ruby/object:Gem::Dependency
|
236
|
-
name: simplecov-console
|
112
|
+
name: rubocop
|
237
113
|
requirement: !ruby/object:Gem::Requirement
|
238
114
|
requirements:
|
239
|
-
- - "
|
115
|
+
- - "~>"
|
240
116
|
- !ruby/object:Gem::Version
|
241
|
-
version:
|
117
|
+
version: 0.63.0
|
242
118
|
type: :development
|
243
119
|
prerelease: false
|
244
120
|
version_requirements: !ruby/object:Gem::Requirement
|
245
121
|
requirements:
|
246
|
-
- - "
|
122
|
+
- - "~>"
|
247
123
|
- !ruby/object:Gem::Version
|
248
|
-
version:
|
124
|
+
version: 0.63.0
|
249
125
|
- !ruby/object:Gem::Dependency
|
250
|
-
name:
|
126
|
+
name: rubocop-rspec
|
251
127
|
requirement: !ruby/object:Gem::Requirement
|
252
128
|
requirements:
|
253
|
-
- - "
|
129
|
+
- - "~>"
|
254
130
|
- !ruby/object:Gem::Version
|
255
|
-
version: '
|
131
|
+
version: '1.31'
|
256
132
|
type: :development
|
257
133
|
prerelease: false
|
258
134
|
version_requirements: !ruby/object:Gem::Requirement
|
259
135
|
requirements:
|
260
|
-
- - "
|
136
|
+
- - "~>"
|
261
137
|
- !ruby/object:Gem::Version
|
262
|
-
version: '
|
263
|
-
description:
|
138
|
+
version: '1.31'
|
139
|
+
description:
|
264
140
|
email:
|
265
|
-
-
|
141
|
+
- achandrasekar@signalfx.com
|
266
142
|
executables: []
|
267
143
|
extensions: []
|
268
144
|
extra_rdoc_files: []
|
269
145
|
files:
|
270
146
|
- ".gitignore"
|
271
|
-
- ".
|
272
|
-
- ".ruby-version"
|
273
|
-
- ".travis.yml"
|
147
|
+
- ".rubocop.yml"
|
274
148
|
- Appraisals
|
275
|
-
- CHANGELOG.md
|
276
149
|
- Gemfile
|
150
|
+
- Gemfile.lock
|
277
151
|
- LICENSE
|
278
152
|
- README.md
|
279
153
|
- Rakefile
|
280
154
|
- bin/console
|
281
155
|
- bin/setup
|
282
|
-
-
|
283
|
-
-
|
284
|
-
-
|
285
|
-
-
|
286
|
-
-
|
287
|
-
-
|
288
|
-
-
|
289
|
-
-
|
290
|
-
-
|
291
|
-
-
|
292
|
-
- lib/rails
|
293
|
-
- lib/rails/
|
294
|
-
- lib/rails/
|
295
|
-
-
|
296
|
-
|
297
|
-
|
298
|
-
- lib/rails/active_support/cache/manual_tracer.rb
|
299
|
-
- lib/rails/active_support/cache/subscriber.rb
|
300
|
-
- lib/rails/active_support/cache/tracer.rb
|
301
|
-
- lib/rails/defer_notifications.rb
|
302
|
-
- lib/rails/rack/tracer.rb
|
303
|
-
- lib/rails/span_helpers.rb
|
304
|
-
- lib/rails/tracer.rb
|
305
|
-
- rails-tracer.gemspec
|
306
|
-
homepage: https://github.com/signalfx/ruby-rails-tracer
|
307
|
-
licenses:
|
308
|
-
- Apache-2.0
|
156
|
+
- lib/rails/instrumentation.rb
|
157
|
+
- lib/rails/instrumentation/patch.rb
|
158
|
+
- lib/rails/instrumentation/subscriber.rb
|
159
|
+
- lib/rails/instrumentation/subscribers/action_cable_subscriber.rb
|
160
|
+
- lib/rails/instrumentation/subscribers/action_controller_subscriber.rb
|
161
|
+
- lib/rails/instrumentation/subscribers/action_mailer_subscriber.rb
|
162
|
+
- lib/rails/instrumentation/subscribers/action_view_subscriber.rb
|
163
|
+
- lib/rails/instrumentation/subscribers/active_job_subscriber.rb
|
164
|
+
- lib/rails/instrumentation/subscribers/active_record_subscriber.rb
|
165
|
+
- lib/rails/instrumentation/subscribers/active_storage_subscriber.rb
|
166
|
+
- lib/rails/instrumentation/subscribers/active_support_subscriber.rb
|
167
|
+
- lib/rails/instrumentation/utils.rb
|
168
|
+
- lib/rails/instrumentation/version.rb
|
169
|
+
- rails-instrumentation.gemspec
|
170
|
+
homepage: https://github.com/signalfx/ruby-rails-instrumentation
|
171
|
+
licenses: []
|
309
172
|
metadata: {}
|
310
|
-
post_install_message:
|
173
|
+
post_install_message:
|
311
174
|
rdoc_options: []
|
312
175
|
require_paths:
|
313
176
|
- lib
|
@@ -315,16 +178,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
315
178
|
requirements:
|
316
179
|
- - ">="
|
317
180
|
- !ruby/object:Gem::Version
|
318
|
-
version:
|
181
|
+
version: '0'
|
319
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
320
183
|
requirements:
|
321
184
|
- - ">="
|
322
185
|
- !ruby/object:Gem::Version
|
323
186
|
version: '0'
|
324
187
|
requirements: []
|
325
|
-
|
326
|
-
|
327
|
-
signing_key:
|
188
|
+
rubygems_version: 3.1.2
|
189
|
+
signing_key:
|
328
190
|
specification_version: 4
|
329
|
-
summary:
|
191
|
+
summary: OpenTracing instrumentation for Rails.
|
330
192
|
test_files: []
|