rails-tracer 0.4.3 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 62a69e8a77d0cfb988e13b5f133c63889952db0c
4
- data.tar.gz: 0b9ff703a9b38e02bbf7815379b5708140d04d64
3
+ metadata.gz: '06269da122bd03c82b26096c0b049ae6dac8101d'
4
+ data.tar.gz: 5e978290f38de0332dd6a664ee63a59e9e2e31b4
5
5
  SHA512:
6
- metadata.gz: 78932784bc5a6cf6f73471c5725f698ac42ebcf94623021c7ecbfe78b9e6319d37a7d3e14103bea1641e0ba807527404f84eb84bf41405f20e49bc30b8b8098a
7
- data.tar.gz: 0ffe2b8adff7e3562ba7c810bec9a70b7556a10019a38b33384727cefacecd60f8d4c4a1d93010f5d216379cc551b3d14b2184b02ad4fd37aa59fab4f92a188e
6
+ metadata.gz: 627b4b5330b4d183fc5ab62996ada35ed02c39cab486dc17a10fae38848c372221c00bed4d2586da2786d30360ff97f29a8005a1268651c12278efe385ba4a93
7
+ data.tar.gz: cb4ae564a91f7220464a433fdfbd1f6b67ef1c55592e62c362bc38b62f0fbbc7010af33dcfd672fc612c1aadad3564e1fc3bba4c77082b14f6821c7c9f526a54
data/.gitignore CHANGED
@@ -8,5 +8,8 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
 
11
+ # Appraisal
12
+ *.gemfile.lock
13
+
11
14
  # rspec failure tracking
12
15
  .rspec_status
File without changes
@@ -4,6 +4,21 @@ rvm:
4
4
  - 2.2
5
5
  - 2.3
6
6
  - 2.4
7
+ gemfile:
8
+ - gemfiles/rails_32.gemfile
9
+ - gemfiles/rails_40.gemfile
10
+ - gemfiles/rails_41.gemfile
11
+ - gemfiles/rails_42.gemfile
12
+ - gemfiles/rails_50.gemfile
13
+ - gemfiles/rails_51.gemfile
14
+ matrix:
15
+ exclude:
16
+ - rvm: 2.4
17
+ gemfile: gemfiles/rails_32.gemfile
18
+ - rvm: 2.4
19
+ gemfile: gemfiles/rails_40.gemfile
20
+ - rvm: 2.4
21
+ gemfile: gemfiles/rails_41.gemfile
7
22
  before_install:
8
23
  - gem install bundler -v 1.15.3
9
24
  services:
@@ -0,0 +1,24 @@
1
+ appraise "rails-32" do
2
+ gem "rails", "~> 3.2.0"
3
+ gem 'test-unit', '~> 3.0'
4
+ end
5
+
6
+ appraise "rails-40" do
7
+ gem "rails", "~> 4.0.0"
8
+ end
9
+
10
+ appraise "rails-41" do
11
+ gem "rails", "~> 4.1.0"
12
+ end
13
+
14
+ appraise "rails-42" do
15
+ gem "rails", "~> 4.2.0"
16
+ end
17
+
18
+ appraise "rails-50" do
19
+ gem "rails", "~> 5.0.0"
20
+ end
21
+
22
+ appraise "rails-51" do
23
+ gem "rails", "~> 5.1.0"
24
+ end
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # OpenTracing Rails Instrumentation
2
2
 
3
- This gem is an attempt to introduce OpenTracing instrumentation into Rails. It's in a very early stage.
3
+ This gem is an attempt to introduce OpenTracing instrumentation into Rails. It's in an early stage.
4
4
 
5
5
  The following instrumentation is supported:
6
6
 
@@ -24,6 +24,30 @@ Or install it yourself as:
24
24
 
25
25
  $ gem install rails-tracer
26
26
 
27
+ ## Rails::Tracer
28
+
29
+ The library hooks up into Rails using `ActiveSupport::Notifications`, and instruments all previously mentioned modules.
30
+ To enable instrumentation, you can either use sub-tracers directly (see sections below) or global `Rails::Tracer` which
31
+ will enabled all of them (except for Rack/ActionDispatch instrumentation).
32
+
33
+ ### Configuration Options
34
+
35
+ * `tracer: OpenTracing::Tracer` an OT compatible tracer. Default `OpenTracing.global_tracer`
36
+ * `active_span: boolean` an active span provider. Default: `nil`.
37
+ * `active_record: boolean` whether to enable `ActiveRecord` instrumentation. Default: `true`.
38
+ * `active_support_cache: boolean` whether to enable `ActionDispatch::Cache` instrumentation. Default: `true`.
39
+ * `dalli: boolean` if set to `true` you will hook up into `Dalli` low-level details. Default: `false`.
40
+ * `rack: boolean` whether to enable extended `Rack` instrumentation. Default: `false`.
41
+ * `middlewares: ActionDispatch::MiddlewareStack` a middlewares stack. Default: `Rails.configuration.middleware`.
42
+
43
+ ### Usage
44
+
45
+ ```ruby
46
+ require 'rails/tracer'
47
+
48
+ Rails::Tracer.instrument
49
+ ```
50
+
27
51
  ## ActionDispatch
28
52
 
29
53
  When you use `rack-tracer`, the generated operation name corresponds to the request's http method e.g. GET, POST etc.
@@ -41,6 +65,14 @@ Rails.configuration.middleware.use(Rack::Tracer)
41
65
  Rails.configuration.middleware.insert_after(Rack::Tracer, Rails::Rack::Tracer)
42
66
  ```
43
67
 
68
+ or simpler
69
+
70
+ ```ruby
71
+ Rails::Rack::Tracer.instrument
72
+ ```
73
+
74
+ optionally you can pass `tracer` argument to `instrument` method.
75
+
44
76
  ## ActiveRecord
45
77
 
46
78
  The library hooks up into Rails using `ActiveSupport::Notifications`, and instruments all `ActiveRecord` query.
@@ -120,9 +152,29 @@ read("user-1")
120
152
 
121
153
  ## Development
122
154
 
123
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
155
+ After checking out the repo, install dependencies.
156
+
157
+ ```
158
+ bundle install
159
+ appraisal install
160
+ ```
161
+
162
+ The tests depends on having memcached running locally within docker container. It means you need to install docker, and docker-compose first.
163
+ Once you're done to run the containers:
164
+
165
+ ```
166
+ docker-compose up -d
167
+ ```
168
+
169
+ Then, to run tests for all appraisals:
170
+
171
+ ```
172
+ appraisal bundle exec rspec spec
173
+ ```
174
+
175
+ You can also run `bin/console` for an interactive prompt that will allow you to experiment.
124
176
 
125
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
177
+ To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
126
178
 
127
179
  ## Contributing
128
180
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ require "rubygems"
2
+ require "bundler/setup"
1
3
  require "bundler/gem_tasks"
2
4
  require "rspec/core/rake_task"
3
5
 
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_RETRY: "1"
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "pry"
6
+ gem "pry-stack_explorer"
7
+ gem "pry-byebug"
8
+ gem "rails", "~> 3.2.0"
9
+ gem "test-unit", "~> 3.0"
10
+
11
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "pry"
6
+ gem "pry-stack_explorer"
7
+ gem "pry-byebug"
8
+ gem "rails", "~> 5.1.3"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "pry"
6
+ gem "pry-stack_explorer"
7
+ gem "pry-byebug"
8
+ gem "rails", "~> 4.0.0"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "pry"
6
+ gem "pry-stack_explorer"
7
+ gem "pry-byebug"
8
+ gem "rails", "~> 4.1.0"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "pry"
6
+ gem "pry-stack_explorer"
7
+ gem "pry-byebug"
8
+ gem "rails", "~> 4.2.0"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "pry"
6
+ gem "pry-stack_explorer"
7
+ gem "pry-byebug"
8
+ gem "rails", "~> 5.1.3"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "pry"
6
+ gem "pry-stack_explorer"
7
+ gem "pry-byebug"
8
+ gem "rails", "~> 5.0.0"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "pry"
6
+ gem "pry-stack_explorer"
7
+ gem "pry-byebug"
8
+ gem "rails", "~> 5.1.0"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1 @@
1
+ require 'rails/tracer'
@@ -4,10 +4,23 @@ module ActiveRecord
4
4
 
5
5
  class << self
6
6
  def instrument(tracer: OpenTracing.global_tracer, active_span: nil)
7
- ::ActiveSupport::Notifications.subscribe('sql.active_record') do |*args|
7
+ clear_subscribers
8
+ @subscriber = ::ActiveSupport::Notifications.subscribe('sql.active_record') do |*args|
8
9
  ActiveRecord::Tracer.sql(tracer: tracer, active_span: active_span, args: args)
9
10
  end
11
+
12
+ self
13
+ end
14
+
15
+ def disable
16
+ if @subscriber
17
+ ActiveSupport::Notifications.unsubscribe(@subscriber)
18
+ @subscriber = nil
19
+ end
20
+
21
+ self
10
22
  end
23
+ alias :clear_subscribers :disable
11
24
 
12
25
  def sql(tracer: OpenTracing.global_tracer, active_span: nil, args:)
13
26
  _, start, finish, _, payload = *args
@@ -20,7 +33,9 @@ module ActiveRecord
20
33
  cached: payload.fetch(:cached, false),
21
34
  connection_id: payload.fetch(:connection_id))
22
35
 
23
- Rails::Tracer::SpanHelpers.set_error(span, payload[:exception_object]) if payload[:exception]
36
+ if payload[:exception]
37
+ Rails::Tracer::SpanHelpers.set_error(span, payload[:exception_object] || payload[:exception])
38
+ end
24
39
 
25
40
  span.finish(end_time: finish)
26
41
  end
@@ -0,0 +1,11 @@
1
+ module ActiveSupport
2
+ module Cache
3
+ class Store
4
+ # See the PR https://github.com/rails/rails/pull/15943/files
5
+ # In order to make the instrumentation to work we need to override the original implementation
6
+ def self.instrument
7
+ true
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ module ActiveSupport
2
+ module Cache
3
+ module Tracer
4
+ class << self
5
+ def start_span(operation_name, tracer: OpenTracing.global_tracer, active_span: nil, start_time: Time.now, event:, **fields)
6
+ span = tracer.start_span(operation_name,
7
+ child_of: active_span.respond_to?(:call) ? active_span.call : active_span,
8
+ start_time: start_time,
9
+ tags: {
10
+ 'component' => 'ActiveSupport::Cache',
11
+ 'span.kind' => 'client',
12
+ 'cache.key' => fields.fetch(:key, 'unknown')
13
+ })
14
+
15
+ if event == 'read'
16
+ span.set_tag('cache.hit', fields.fetch(:hit, false))
17
+ end
18
+
19
+ span
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,62 @@
1
+ module ActiveSupport
2
+ module Cache
3
+ module Tracer
4
+ class Subscriber
5
+ attr_reader :tracer, :active_span, :event, :operation_name
6
+
7
+ def initialize(tracer: OpenTracing.global_tracer, active_span: nil, event:)
8
+ @tracer = tracer
9
+ @active_span = active_span
10
+ @event = event
11
+ @operation_name = "cache.#{event}"
12
+ end
13
+
14
+ # For compatibility with Rails 3.2
15
+ def call(*args)
16
+ _, start, finish, _, payload = *args
17
+
18
+ span = Tracer.start_span(operation_name,
19
+ event: event,
20
+ tracer: tracer,
21
+ active_span: active_span,
22
+ start_time: start,
23
+ **payload)
24
+
25
+ if payload[:exception]
26
+ Rails::Tracer::SpanHelpers.set_error(span, payload[:exception_object] || payload[:exception])
27
+ end
28
+
29
+ span.finish(end_time: finish)
30
+ end
31
+
32
+ def start(name, _, payload)
33
+ span = tracer.start_span(operation_name,
34
+ child_of: active_span.respond_to?(:call) ? active_span.call : active_span,
35
+ tags: {
36
+ 'component' => 'ActiveSupport::Cache',
37
+ 'span.kind' => 'client'
38
+ })
39
+
40
+ payload[:__OT_SPAN__] = span
41
+ end
42
+
43
+ def finish(name, _, payload)
44
+ span = payload[:__OT_SPAN__]
45
+ return unless span
46
+
47
+ span.set_tag('cache.key', payload.fetch(:key, 'unknown'))
48
+
49
+ if event == 'read'
50
+ span.set_tag('cache.hit', payload.fetch(:hit, false))
51
+ end
52
+
53
+ if payload[:exception]
54
+ Rails::Tracer::SpanHelpers.set_error(span, payload[:exception_object] || payload[:exception])
55
+ end
56
+
57
+ span.finish
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -1,22 +1,37 @@
1
+ require 'rails/active_support/cache/core_ext'
2
+ require 'rails/active_support/cache/manual_tracer'
3
+ require 'rails/active_support/cache/subscriber'
4
+
1
5
  module ActiveSupport
2
6
  module Cache
3
7
  module Tracer
4
8
  class << self
5
- # TODO: In Rails 4.0+ it's possible to subscribe to start events
6
9
  def instrument(tracer: OpenTracing.global_tracer, active_span: nil, dalli: false)
10
+ clear_subscribers
7
11
  events = %w(read write generate delete clear)
8
- events.each do |event|
9
- ActiveSupport::Notifications.subscribe("cache_#{event}.active_support") do |*args|
10
- ActiveSupport::Cache::Tracer.instrument_event(tracer: tracer,
11
- active_span: active_span,
12
- event: event,
13
- args: args)
14
- end
12
+ @subscribers = events.map do |event|
13
+ subscriber = ActiveSupport::Cache::Tracer::Subscriber.new(tracer: tracer,
14
+ active_span: active_span,
15
+ event: event)
16
+ ActiveSupport::Notifications.subscribe("cache_#{event}.active_support", subscriber)
15
17
  end
16
18
 
17
19
  instrument_dalli(tracer: tracer, active_span: active_span) if dalli
20
+
21
+ self
18
22
  end
19
23
 
24
+ def disable
25
+ if @subscribers
26
+ @subscribers.each { |subscriber| ActiveSupport::Notifications.unsubscribe(subscriber) }
27
+ @subscribers.clear
28
+ end
29
+
30
+ self
31
+ end
32
+
33
+ alias :clear_subscribers :disable
34
+
20
35
  def instrument_dalli(tracer:, active_span:)
21
36
  return unless defined?(ActiveSupport::Cache::DalliStore)
22
37
  require 'rails/active_support/cache/dalli_tracer'
@@ -34,39 +49,6 @@ module ActiveSupport
34
49
  loggers = [tracing_logger, Dalli.logger].compact
35
50
  Dalli.logger = Tracing::CompositeLogger.new(*loggers)
36
51
  end
37
-
38
- def instrument_event(tracer: OpenTracing.global_tracer, active_span: nil, event:, args:)
39
- _, start, finish, _, payload = *args
40
-
41
- span = start_span("cache.#{event}",
42
- event: event,
43
- tracer: tracer,
44
- active_span: active_span,
45
- start_time: start,
46
- **payload)
47
-
48
-
49
- Rails::Tracer::SpanHelpers.set_error(span, payload[:exception_object]) if payload[:exception]
50
-
51
- span.finish(end_time: finish)
52
- end
53
-
54
- def start_span(operation_name, tracer: OpenTracing.global_tracer, active_span: nil, start_time: Time.now, event:, **fields)
55
- span = tracer.start_span(operation_name,
56
- child_of: active_span.respond_to?(:call) ? active_span.call : active_span,
57
- start_time: start_time,
58
- tags: {
59
- 'component' => 'ActiveSupport::Cache',
60
- 'span.kind' => 'client',
61
- 'cache.key' => fields.fetch(:key, 'unknown')
62
- })
63
-
64
- if event == 'read'
65
- span.set_tag('cache.hit', fields.fetch(:hit, false))
66
- end
67
-
68
- span
69
- end
70
52
  end
71
53
  end
72
54
  end
@@ -1,6 +1,27 @@
1
1
  module Rails
2
2
  module Rack
3
3
  class Tracer
4
+ class << self
5
+ def instrument(tracer: OpenTracing.global_tracer, middlewares: Rails.configuration.middleware)
6
+ return unless defined?(::Rack::Tracer)
7
+ @owns_all_middlewares = false
8
+ unless middlewares.include?(::Rack::Tracer)
9
+ middlewares.use(::Rack::Tracer, tracer: tracer)
10
+ @owns_all_middlewares = true
11
+ end
12
+ middlewares.insert_after(::Rack::Tracer, Rails::Rack::Tracer)
13
+ end
14
+
15
+ def disable(middlewares: Rails.configuration.middleware)
16
+ middlewares.delete(Rails::Rack::Tracer)
17
+ if @owns_all_middlewares
18
+ middlewares.delete(::Rack::Tracer)
19
+ @owns_all_middlewares = false
20
+ end
21
+ rescue
22
+ end
23
+ end
24
+
4
25
  def initialize(app)
5
26
  @app = app
6
27
  end
@@ -4,7 +4,14 @@ module Rails
4
4
  class << self
5
5
  def set_error(span, exception)
6
6
  span.set_tag('error', true)
7
- span.log(event: 'error', :'error.object' => exception)
7
+
8
+ case exception
9
+ when Array
10
+ exception_class, exception_message = exception
11
+ span.log(event: 'error', :'error.kind' => exception_class, message: exception_message)
12
+ when Exception
13
+ span.log(event: 'error', :'error.object' => exception)
14
+ end
8
15
  end
9
16
  end
10
17
  end
@@ -2,3 +2,24 @@ require "rails/span_helpers"
2
2
  require "rails/rack/tracer"
3
3
  require "rails/active_record/tracer"
4
4
  require "rails/active_support/cache/tracer"
5
+
6
+ module Rails
7
+ module Tracer
8
+ class << self
9
+ def instrument(tracer: OpenTracing.global_tracer, active_span: nil,
10
+ rack: false, middlewares: Rails.configuration.middleware,
11
+ active_record: true,
12
+ active_support_cache: true, dalli: false)
13
+ Rails::Rack::Tracer.instrument(tracer: tracer, middlewares: middlewares) if rack
14
+ ActiveRecord::Tracer.instrument(tracer: tracer, active_span: active_span) if active_record
15
+ ActiveSupport::Cache::Tracer.instrument(tracer: tracer, active_span: active_span, dalli: dalli) if active_support_cache
16
+ end
17
+
18
+ def disable
19
+ ActiveRecord::Tracer.disable
20
+ ActiveSupport::Cache::Tracer.disable
21
+ Rails::Rack::Tracer.disable
22
+ end
23
+ end
24
+ end
25
+ end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "rails-tracer"
7
- spec.version = "0.4.3"
7
+ spec.version = "0.5.0"
8
8
  spec.authors = ["iaintshine"]
9
9
  spec.email = ["bodziomista@gmail.com"]
10
10
 
@@ -26,7 +26,6 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency "rack-tracer", "~> 0.3.0"
27
27
  spec.add_dependency "method-tracer", "~> 1.1"
28
28
 
29
- spec.add_development_dependency "rails", "~> 5.1.3"
30
29
  spec.add_development_dependency "sqlite3"
31
30
  spec.add_development_dependency "puma", "~> 3.7"
32
31
  spec.add_development_dependency "rspec-rails", "~> 3.6"
@@ -35,10 +34,11 @@ Gem::Specification.new do |spec|
35
34
  spec.add_development_dependency "tracing-logger", "~> 1.0"
36
35
  spec.add_development_dependency "test-tracer", "~> 1.1"
37
36
  spec.add_development_dependency "tracing-matchers", "~> 1.0"
37
+ spec.add_development_dependency "spanmanager", "~> 0.3.0"
38
38
  spec.add_development_dependency "bundler", "~> 1.15"
39
39
  spec.add_development_dependency "rake", "~> 10.0"
40
40
  spec.add_development_dependency "rspec", "~> 3.0"
41
- spec.add_development_dependency "rack", "~> 2.0"
42
41
  spec.add_development_dependency "simplecov"
43
42
  spec.add_development_dependency "simplecov-console"
43
+ spec.add_development_dependency "appraisal"
44
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-tracer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - iaintshine
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-03 00:00:00.000000000 Z
11
+ date: 2017-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentracing
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.1'
55
- - !ruby/object:Gem::Dependency
56
- name: rails
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 5.1.3
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 5.1.3
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: sqlite3
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +164,20 @@ dependencies:
178
164
  - - "~>"
179
165
  - !ruby/object:Gem::Version
180
166
  version: '1.0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: spanmanager
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.3.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.3.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: bundler
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -221,21 +221,21 @@ dependencies:
221
221
  - !ruby/object:Gem::Version
222
222
  version: '3.0'
223
223
  - !ruby/object:Gem::Dependency
224
- name: rack
224
+ name: simplecov
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - "~>"
227
+ - - ">="
228
228
  - !ruby/object:Gem::Version
229
- version: '2.0'
229
+ version: '0'
230
230
  type: :development
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
- - - "~>"
234
+ - - ">="
235
235
  - !ruby/object:Gem::Version
236
- version: '2.0'
236
+ version: '0'
237
237
  - !ruby/object:Gem::Dependency
238
- name: simplecov
238
+ name: simplecov-console
239
239
  requirement: !ruby/object:Gem::Requirement
240
240
  requirements:
241
241
  - - ">="
@@ -249,7 +249,7 @@ dependencies:
249
249
  - !ruby/object:Gem::Version
250
250
  version: '0'
251
251
  - !ruby/object:Gem::Dependency
252
- name: simplecov-console
252
+ name: appraisal
253
253
  requirement: !ruby/object:Gem::Requirement
254
254
  requirements:
255
255
  - - ">="
@@ -271,8 +271,9 @@ extra_rdoc_files: []
271
271
  files:
272
272
  - ".gitignore"
273
273
  - ".rspec"
274
- - ".ruby-verison"
274
+ - ".ruby-version"
275
275
  - ".travis.yml"
276
+ - Appraisals
276
277
  - CHANGELOG.md
277
278
  - Gemfile
278
279
  - LICENSE
@@ -281,8 +282,21 @@ files:
281
282
  - bin/console
282
283
  - bin/setup
283
284
  - docker-compose.yml
285
+ - gemfiles/.bundle/config
286
+ - gemfiles/rails_32.gemfile
287
+ - gemfiles/rails_4.gemfile
288
+ - gemfiles/rails_40.gemfile
289
+ - gemfiles/rails_41.gemfile
290
+ - gemfiles/rails_42.gemfile
291
+ - gemfiles/rails_5.gemfile
292
+ - gemfiles/rails_50.gemfile
293
+ - gemfiles/rails_51.gemfile
294
+ - lib/rails-tracer.rb
284
295
  - lib/rails/active_record/tracer.rb
296
+ - lib/rails/active_support/cache/core_ext.rb
285
297
  - lib/rails/active_support/cache/dalli_tracer.rb
298
+ - lib/rails/active_support/cache/manual_tracer.rb
299
+ - lib/rails/active_support/cache/subscriber.rb
286
300
  - lib/rails/active_support/cache/tracer.rb
287
301
  - lib/rails/rack/tracer.rb
288
302
  - lib/rails/span_helpers.rb