ddtrace 0.10.0 → 0.11.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b696f89a64327a9095fce4fa8dfe75fd243f3cb
4
- data.tar.gz: 38fd90000f89a2379882c0ea73c343f1b8f2fd29
3
+ metadata.gz: 97a9ed205c345e9abaa1b22823662552e52c898f
4
+ data.tar.gz: d3373c5a892cf5685ea2e360bcc2191702a358dd
5
5
  SHA512:
6
- metadata.gz: '0999d891c779b691db6faf84a85096f6465aac6a612dbdbaf2b6dceaf2c9293efd562b8cdaeb6a8a430fcf49752299adab64f21ec734ceb315df080acae55b7d'
7
- data.tar.gz: 51319812e767f73499185daf8bc81f9121fc021aa43eb146ed246fac998aa824da08f2255f55f1535f1992dc87bcfa9645e3f1e56af8961f6f17e95e40ee753b
6
+ metadata.gz: 9601250c89c609412e3243f26e43052b6d71c47861adb4f4dbf424d66507f39d97b95bc8ce514a6e2554d18b8fd5cf5dc98d88894d7ff0f14912a11eef5b696c
7
+ data.tar.gz: 663044f68bc969e7510740c88218875021aec925dbb458bb28bac7f81765d0fe0873c226301b2dbca813d097f2e7ee94e988e71eb5bbd24a381b16c4a6c71fc4
data/ddtrace.gemspec CHANGED
@@ -6,7 +6,7 @@ require 'ddtrace/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'ddtrace'
9
- spec.version = "#{Datadog::VERSION::STRING}#{ENV['VERSION_SUFFIX']}"
9
+ spec.version = "#{Datadog::VERSION::STRING}.beta1#{ENV['VERSION_SUFFIX']}"
10
10
  spec.required_ruby_version = '>= 1.9.1'
11
11
  spec.authors = ['Datadog, Inc.']
12
12
  spec.email = ['dev@datadoghq.com']
@@ -17,14 +17,24 @@ module Datadog
17
17
 
18
18
  def use(integration_name, options = {})
19
19
  integration = fetch_integration(integration_name)
20
+ settings = Proxy.new(integration)
20
21
 
21
22
  integration.sorted_options.each do |name|
22
- integration.set_option(name, options[name]) if options.key?(name)
23
+ settings[name] = options.fetch(name, settings[name])
23
24
  end
24
25
 
25
26
  integration.patch if integration.respond_to?(:patch)
26
27
  end
27
28
 
29
+ def tracer(options = {})
30
+ instance = options.fetch(:instance, Datadog.tracer)
31
+
32
+ instance.configure(options)
33
+ instance.set_tags(options[:tags]) if options[:tags]
34
+ instance.set_tags(env: options[:env]) if options[:env]
35
+ instance.class.debug_logging = options.fetch(:debug, false)
36
+ end
37
+
28
38
  private
29
39
 
30
40
  def fetch_integration(name)
@@ -6,6 +6,7 @@ module Datadog
6
6
  module Patcher
7
7
  include Base
8
8
  register_as :active_record, auto_patch: false
9
+ option :service_name
9
10
 
10
11
  @patched = false
11
12
 
@@ -59,15 +60,10 @@ module Datadog
59
60
  end
60
61
 
61
62
  def self.database_service
62
- @database_service ||= if defined?(::Sinatra)
63
- datadog_trace.fetch(:default_database_service, adapter_name())
64
- else
65
- adapter_name()
66
- end
67
- if @database_service
68
- tracer().set_service_info(@database_service, 'sinatra',
69
- Datadog::Ext::AppTypes::DB)
70
- end
63
+ return @database_service if defined?(@database_service)
64
+
65
+ @database_service = get_option(:service_name) || adapter_name
66
+ tracer.set_service_info(@database_service, 'sinatra', Ext::AppTypes::DB)
71
67
  @database_service
72
68
  end
73
69
 
@@ -1,7 +1,6 @@
1
1
  module Datadog
2
2
  module Contrib
3
3
  module Aws
4
- SERVICE = 'aws'.freeze
5
4
  AGENT = 'aws-sdk-ruby'.freeze
6
5
  RESOURCE = 'aws.command'.freeze
7
6
 
@@ -9,6 +8,7 @@ module Datadog
9
8
  module Patcher
10
9
  include Base
11
10
  register_as :aws, auto_patch: true
11
+ option :service_name, default: 'aws'
12
12
 
13
13
  @patched = false
14
14
 
@@ -37,7 +37,7 @@ module Datadog
37
37
  private
38
38
 
39
39
  def add_pin
40
- Pin.new(SERVICE, app_type: Ext::AppTypes::WEB).tap do |pin|
40
+ Pin.new(get_option(:service_name), app_type: Ext::AppTypes::WEB).tap do |pin|
41
41
  pin.onto(::Aws)
42
42
  end
43
43
  end
@@ -2,7 +2,6 @@ module Datadog
2
2
  module Contrib
3
3
  module Dalli
4
4
  COMPATIBLE_WITH = Gem::Version.new('2.0.0')
5
- SERVICE = 'memcached'.freeze
6
5
  NAME = 'memcached.command'.freeze
7
6
  CMD_TAG = 'memcached.command'.freeze
8
7
 
@@ -10,6 +9,7 @@ module Datadog
10
9
  module Patcher
11
10
  include Base
12
11
  register_as :dalli, auto_patch: true
12
+ option :service_name, default: 'memcached'
13
13
 
14
14
  @patched = false
15
15
 
@@ -42,7 +42,7 @@ module Datadog
42
42
  end
43
43
 
44
44
  def add_pin!
45
- Pin.new(SERVICE, app_type: Ext::AppTypes::DB).tap do |pin|
45
+ Pin.new(get_option(:service_name), app_type: Ext::AppTypes::DB).tap do |pin|
46
46
  pin.onto(::Dalli)
47
47
  end
48
48
  end
@@ -16,6 +16,7 @@ module Datadog
16
16
  module Patcher
17
17
  include Base
18
18
  register_as :elasticsearch, auto_patch: true
19
+ option :service_name, default: SERVICE
19
20
 
20
21
  @patched = false
21
22
 
@@ -45,6 +46,7 @@ module Datadog
45
46
 
46
47
  # rubocop:disable Metrics/MethodLength
47
48
  def patch_elasticsearch_transport_client
49
+ # rubocop:disable Metrics/BlockLength
48
50
  ::Elasticsearch::Transport::Client.class_eval do
49
51
  alias_method :initialize_without_datadog, :initialize
50
52
  Datadog::Monkey.without_warnings do
@@ -52,7 +54,8 @@ module Datadog
52
54
  end
53
55
 
54
56
  def initialize(*args)
55
- pin = Datadog::Pin.new(SERVICE, app: 'elasticsearch', app_type: Datadog::Ext::AppTypes::DB)
57
+ service = Datadog.configuration[:elasticsearch][:service_name]
58
+ pin = Datadog::Pin.new(service, app: 'elasticsearch', app_type: Datadog::Ext::AppTypes::DB)
56
59
  pin.onto(self)
57
60
  initialize_without_datadog(*args)
58
61
  end
@@ -8,6 +8,7 @@ module Datadog
8
8
  module Patcher
9
9
  include Base
10
10
  register_as :faraday, auto_patch: true
11
+ option :service_name, default: SERVICE
11
12
 
12
13
  @patched = false
13
14
 
@@ -42,6 +43,7 @@ module Datadog
42
43
  def add_pin
43
44
  Pin.new(SERVICE, app_type: Ext::AppTypes::WEB).tap do |pin|
44
45
  pin.onto(::Faraday)
46
+ pin.service = Datadog.configuration[:faraday][:service_name]
45
47
  end
46
48
  end
47
49
 
@@ -8,6 +8,7 @@ module Datadog
8
8
  module Patcher
9
9
  include Base
10
10
  register_as :grape, auto_patch: true
11
+ option :service_name, default: SERVICE
11
12
 
12
13
  @patched = false
13
14
 
@@ -31,7 +32,8 @@ module Datadog
31
32
  patch_endpoint_render()
32
33
 
33
34
  # attach a PIN object globally and set the service once
34
- pin = Datadog::Pin.new(SERVICE, app: 'grape', app_type: Datadog::Ext::AppTypes::WEB)
35
+ service = get_option(:service_name)
36
+ pin = Datadog::Pin.new(service, app: 'grape', app_type: Datadog::Ext::AppTypes::WEB)
35
37
  pin.onto(::Grape)
36
38
  if pin.tracer && pin.service
37
39
  pin.tracer.set_service_info(pin.service, 'grape', pin.app_type)
@@ -13,6 +13,7 @@ module Datadog
13
13
  module Patcher
14
14
  include Base
15
15
  register_as :mongo, auto_patch: true
16
+ option :service_name, default: SERVICE
16
17
 
17
18
  @patched = false
18
19
 
@@ -63,7 +64,8 @@ module Datadog
63
64
  def initialize(*args, &blk)
64
65
  # attach the Pin instance
65
66
  initialize_without_datadog(*args, &blk)
66
- pin = Datadog::Pin.new(SERVICE, app: APP, app_type: Datadog::Ext::AppTypes::DB)
67
+ service = Datadog.configuration[:mongo][:service_name]
68
+ pin = Datadog::Pin.new(service, app: APP, app_type: Datadog::Ext::AppTypes::DB)
67
69
  pin.onto(self)
68
70
  if pin.tracer && pin.service
69
71
  pin.tracer.set_service_info(pin.service, 'mongodb', pin.app_type)
@@ -17,12 +17,15 @@ module Datadog
17
17
  register_as :rack
18
18
 
19
19
  option :tracer, default: Datadog.tracer
20
- option :default_service, default: 'rack'
20
+ option :service_name, default: 'rack', depends_on: [:tracer] do |value|
21
+ get_option(:tracer).set_service_info(value, 'rack', Ext::AppTypes::WEB)
22
+ value
23
+ end
21
24
  option :distributed_tracing_enabled, default: false
22
25
 
23
26
  def initialize(app, options = {})
24
27
  # update options with our configuration, unless it's already available
25
- [:tracer, :default_service, :distributed_tracing_enabled].each do |k|
28
+ [:tracer, :service_name, :distributed_tracing_enabled].each do |k|
26
29
  Datadog.configuration[:rack][k] = options[k] unless options[k].nil?
27
30
  end
28
31
 
@@ -35,15 +38,10 @@ module Datadog
35
38
 
36
39
  # retrieve the current tracer and service
37
40
  @tracer = Datadog.configuration[:rack][:tracer]
38
- @service = Datadog.configuration[:rack][:default_service]
41
+ @service = Datadog.configuration[:rack][:service_name]
39
42
  @distributed_tracing_enabled = Datadog.configuration[:rack][:distributed_tracing_enabled]
40
43
 
41
44
  # configure the Rack service
42
- @tracer.set_service_info(
43
- @service,
44
- 'rack',
45
- Datadog::Ext::AppTypes::WEB
46
- )
47
45
  end
48
46
 
49
47
  # rubocop:disable Metrics/MethodLength
@@ -14,7 +14,7 @@ module Datadog
14
14
  def self.start_processing(payload)
15
15
  # trace the execution
16
16
  tracer = Datadog.configuration[:rails][:tracer]
17
- service = Datadog.configuration[:rails][:default_controller_service]
17
+ service = Datadog.configuration[:rails][:controller_service]
18
18
  type = Datadog::Ext::HTTP::TYPE
19
19
  span = tracer.trace('rails.action_controller', service: service, span_type: type)
20
20
 
@@ -19,7 +19,7 @@ module Datadog
19
19
 
20
20
  def self.sql(_name, start, finish, _id, payload)
21
21
  tracer = Datadog.configuration[:rails][:tracer]
22
- database_service = Datadog.configuration[:rails][:default_database_service]
22
+ database_service = Datadog.configuration[:rails][:database_service]
23
23
  adapter_name = ::ActiveRecord::Base.connection_config[:adapter]
24
24
  adapter_name = Datadog::Contrib::Rails::Utils.normalize_vendor(adapter_name)
25
25
  span_type = Datadog::Ext::SQL::TYPE
@@ -26,7 +26,7 @@ module Datadog
26
26
  payload[:action] == 'GET'
27
27
 
28
28
  # create a new ``Span`` and add it to the tracing context
29
- service = Datadog.configuration[:rails][:default_cache_service]
29
+ service = Datadog.configuration[:rails][:cache_service]
30
30
  type = Datadog::Ext::CACHE::TYPE
31
31
  span = tracer.trace('rails.cache', service: service, span_type: type)
32
32
  span.resource = payload.fetch(:action)
@@ -168,6 +168,7 @@ module Datadog
168
168
  patch_cache_store_fetch
169
169
  patch_cache_store_write
170
170
  patch_cache_store_delete
171
+ reload_cache_store
171
172
  end
172
173
 
173
174
  def cache_store_class(k)
@@ -285,5 +286,24 @@ module Datadog
285
286
  end
286
287
  end
287
288
  end
289
+
290
+ def self.reload_cache_store
291
+ return unless Datadog.registry[:redis].patched?
292
+
293
+ return unless defined?(::ActiveSupport::Cache::RedisStore) &&
294
+ defined?(::Rails.cache) &&
295
+ ::Rails.cache.is_a?(::ActiveSupport::Cache::RedisStore)
296
+
297
+ Tracer.log.debug('Reloading redis cache store')
298
+
299
+ # backward compatibility: Rails 3.x doesn't have `cache=` method
300
+ cache_store = ::Rails.configuration.cache_store
301
+ cache_instance = ::ActiveSupport::Cache.lookup_store(cache_store)
302
+ if ::Rails::VERSION::MAJOR.to_i == 3
303
+ silence_warnings { Object.const_set 'RAILS_CACHE', cache_instance }
304
+ elsif ::Rails::VERSION::MAJOR.to_i > 3
305
+ ::Rails.cache = cache_instance
306
+ end
307
+ end
288
308
  end
289
309
  end
@@ -31,62 +31,37 @@ module Datadog
31
31
  # - instrument parts of the framework when needed
32
32
  module Framework
33
33
  # configure Datadog settings
34
- # rubocop:disable Metrics/MethodLength
35
- # rubocop:disable Metrics/AbcSize
36
34
  def self.configure(rails_config)
37
35
  user_config = rails_config[:config].datadog_trace rescue {}
38
36
  Datadog.configuration.use(:rails, user_config)
39
- tracer = Datadog.configuration[:rails][:tracer]
40
-
41
- tracer.enabled = Datadog.configuration[:rails][:enabled]
42
- tracer.class.debug_logging = Datadog.configuration[:rails][:debug]
43
-
44
- tracer.configure(
45
- hostname: Datadog.configuration[:rails][:trace_agent_hostname],
46
- port: Datadog.configuration[:rails][:trace_agent_port],
47
- priority_sampling: Datadog.configuration[:rails][:priority_sampling]
37
+ config = Datadog.configuration[:rails]
38
+ tracer = config[:tracer]
39
+ config[:service_name] ||= Utils.app_name
40
+
41
+ Datadog.configuration.use(
42
+ :rack,
43
+ tracer: tracer,
44
+ service_name: config[:service_name],
45
+ distributed_tracing_enabled: config[:distributed_tracing_enabled]
48
46
  )
49
47
 
50
- tracer.set_tags(Datadog.configuration[:rails][:tags])
51
- tracer.set_tags('env' => Datadog.configuration[:rails][:env]) if Datadog.configuration[:rails][:env]
48
+ config[:controller_service] ||= config[:service_name]
49
+ config[:cache_service] ||= "#{config[:service_name]}-cache"
52
50
 
53
- tracer.set_service_info(
54
- Datadog.configuration[:rails][:default_service],
55
- 'rack',
56
- Datadog::Ext::AppTypes::WEB
57
- )
58
-
59
- tracer.set_service_info(
60
- Datadog.configuration[:rails][:default_controller_service],
61
- 'rails',
62
- Datadog::Ext::AppTypes::WEB
63
- )
64
- tracer.set_service_info(
65
- Datadog.configuration[:rails][:default_cache_service],
66
- 'rails',
67
- Datadog::Ext::AppTypes::CACHE
68
- )
51
+ tracer.set_service_info(config[:controller_service], 'rails', Ext::AppTypes::WEB)
52
+ tracer.set_service_info(config[:cache_service], 'rails', Ext::AppTypes::CACHE)
69
53
 
70
54
  # By default, default service would be guessed from the script
71
55
  # being executed, but here we know better, get it from Rails config.
72
- tracer.default_service = Datadog.configuration[:rails][:default_service]
73
-
74
- Datadog.configuration[:rack][:tracer] = tracer
75
- Datadog.configuration[:rack][:default_service] = Datadog.configuration[:rails][:default_service]
76
- Datadog.configuration[:rack][:distributed_tracing_enabled] = \
77
- Datadog.configuration[:rails][:distributed_tracing_enabled]
56
+ tracer.default_service = config[:service_name]
78
57
 
79
58
  if defined?(::ActiveRecord)
80
59
  begin
81
60
  # set default database service details and store it in the configuration
82
61
  conn_cfg = ::ActiveRecord::Base.connection_config()
83
62
  adapter_name = Datadog::Contrib::Rails::Utils.normalize_vendor(conn_cfg[:adapter])
84
- Datadog.configuration[:rails][:default_database_service] ||= adapter_name
85
- tracer.set_service_info(
86
- Datadog.configuration[:rails][:default_database_service],
87
- adapter_name,
88
- Datadog::Ext::AppTypes::DB
89
- )
63
+ config[:database_service] ||= "#{config[:service_name]}-#{adapter_name}"
64
+ tracer.set_service_info(config[:database_service], adapter_name, Ext::AppTypes::DB)
90
65
  rescue StandardError => e
91
66
  Datadog::Tracer.log.warn("Unable to get database config (#{e}), skipping ActiveRecord instrumentation")
92
67
  end
@@ -95,54 +70,6 @@ module Datadog
95
70
  # update global configurations
96
71
  ::Rails.configuration.datadog_trace = Datadog.registry[:rails].to_h
97
72
  end
98
-
99
- def self.auto_instrument_redis
100
- return unless Datadog.configuration[:rails][:auto_instrument_redis]
101
- Datadog::Tracer.log.debug('Enabling auto-instrumentation for Redis client')
102
-
103
- # patch the Redis library and reload the CacheStore if it was using Redis
104
- Datadog::Monkey.patch_module(:redis)
105
-
106
- # reload the cache store if it's available and it's using Redis
107
- return unless defined?(::ActiveSupport::Cache::RedisStore) &&
108
- defined?(::Rails.cache) &&
109
- ::Rails.cache.is_a?(::ActiveSupport::Cache::RedisStore)
110
- Datadog::Tracer.log.debug('Enabling auto-instrumentation for redis-rails connector')
111
-
112
- # backward compatibility: Rails 3.x doesn't have `cache=` method
113
- cache_store = ::Rails.configuration.cache_store
114
- cache_instance = ::ActiveSupport::Cache.lookup_store(cache_store)
115
- if ::Rails::VERSION::MAJOR.to_i == 3
116
- silence_warnings { Object.const_set 'RAILS_CACHE', cache_instance }
117
- elsif ::Rails::VERSION::MAJOR.to_i > 3
118
- ::Rails.cache = cache_instance
119
- end
120
- end
121
-
122
- def self.auto_instrument_grape
123
- return unless Datadog.configuration[:rails][:auto_instrument_grape]
124
-
125
- # patch the Grape library so that endpoints are traced
126
- Datadog::Monkey.patch_module(:grape)
127
-
128
- # update the Grape pin object
129
- pin = Datadog::Pin.get_from(::Grape)
130
- return unless pin && pin.enabled?
131
- pin.tracer = Datadog.configuration[:rails][:tracer]
132
- pin.service = Datadog.configuration[:rails][:default_grape_service]
133
- end
134
-
135
- # automatically instrument all Rails component
136
- def self.auto_instrument
137
- return unless Datadog.configuration[:rails][:auto_instrument]
138
- Datadog::Tracer.log.debug('Enabling auto-instrumentation for core components')
139
-
140
- # instrumenting Rails framework
141
- Datadog::Contrib::Rails::ActionController.instrument()
142
- Datadog::Contrib::Rails::ActionView.instrument()
143
- Datadog::Contrib::Rails::ActiveRecord.instrument()
144
- Datadog::Contrib::Rails::ActiveSupport.instrument()
145
- end
146
73
  end
147
74
  end
148
75
  end
@@ -6,25 +6,13 @@ module Datadog
6
6
  include Base
7
7
  register_as :rails, auto_patch: true
8
8
 
9
- option :enabled, default: true
10
- option :auto_instrument, default: false
11
- option :auto_instrument_redis, default: false
12
- option :auto_instrument_grape, default: false
13
- option :default_service, default: 'rails-app'
14
- option :default_controller_service, default: 'rails-controller'
15
- option :default_cache_service, default: 'rails-cache'
16
- option :default_grape_service, default: 'grape'
17
- option :default_database_service
9
+ option :service_name
10
+ option :controller_service
11
+ option :cache_service
12
+ option :database_service
18
13
  option :distributed_tracing_enabled, default: false
19
- option :priority_sampling, default: false
20
14
  option :template_base_path, default: 'views/'
21
15
  option :tracer, default: Datadog.tracer
22
- option :debug, default: false
23
- option :trace_agent_hostname, default: Datadog::Writer::HOSTNAME
24
- option :trace_agent_port, default: Datadog::Writer::PORT
25
- option :env, default: nil
26
- option :tags, default: {}
27
- option :sidekiq_service, default: 'sidekiq'
28
16
 
29
17
  @patched = false
30
18
 
@@ -10,9 +10,10 @@ module Datadog
10
10
 
11
11
  config.after_initialize do |app|
12
12
  Datadog::Contrib::Rails::Framework.configure(config: app.config)
13
- Datadog::Contrib::Rails::Framework.auto_instrument
14
- Datadog::Contrib::Rails::Framework.auto_instrument_redis
15
- Datadog::Contrib::Rails::Framework.auto_instrument_grape
13
+ Datadog::Contrib::Rails::ActionController.instrument
14
+ Datadog::Contrib::Rails::ActionView.instrument
15
+ Datadog::Contrib::Rails::ActiveRecord.instrument
16
+ Datadog::Contrib::Rails::ActiveSupport.instrument
16
17
  end
17
18
  end
18
19
  end
@@ -37,6 +37,14 @@ module Datadog
37
37
  vendor
38
38
  end
39
39
  end
40
+
41
+ def self.app_name
42
+ if ::Rails::VERSION::MAJOR >= 4
43
+ ::Rails.application.class.parent_name.underscore
44
+ else
45
+ ::Rails.application.class.to_s.underscore
46
+ end
47
+ end
40
48
  end
41
49
  end
42
50
  end
@@ -11,6 +11,7 @@ module Datadog
11
11
  module Patcher
12
12
  include Base
13
13
  register_as :redis, auto_patch: true
14
+ option :service_name, default: SERVICE
14
15
 
15
16
  @patched = false
16
17
 
@@ -29,8 +30,8 @@ module Datadog
29
30
 
30
31
  patch_redis()
31
32
  patch_redis_client()
32
-
33
33
  @patched = true
34
+ RailsCachePatcher.reload_cache_store if Datadog.registry[:rails].patched?
34
35
  rescue StandardError => e
35
36
  Datadog::Tracer.log.error("Unable to apply Redis integration: #{e}")
36
37
  end
@@ -62,7 +63,8 @@ module Datadog
62
63
  end
63
64
 
64
65
  def initialize(*args)
65
- pin = Datadog::Pin.new(SERVICE, app: 'redis', app_type: Datadog::Ext::AppTypes::DB)
66
+ service = Datadog.configuration[:redis][:service_name]
67
+ pin = Datadog::Pin.new(service, app: 'redis', app_type: Datadog::Ext::AppTypes::DB)
66
68
  pin.onto(self)
67
69
  if pin.tracer && pin.service
68
70
  pin.tracer.set_service_info(pin.service, pin.app, pin.app_type)
@@ -13,6 +13,7 @@ module Datadog
13
13
  module Patcher
14
14
  include Base
15
15
  register_as :resque, auto_patch: true
16
+ option :service_name, default: SERVICE
16
17
 
17
18
  @patched = false
18
19
 
@@ -36,7 +37,7 @@ module Datadog
36
37
  private
37
38
 
38
39
  def add_pin
39
- Pin.new(SERVICE, app_type: Ext::AppTypes::WORKER).tap do |pin|
40
+ Pin.new(get_option(:service_name), app_type: Ext::AppTypes::WORKER).tap do |pin|
40
41
  pin.onto(::Resque)
41
42
  end
42
43
  end
@@ -18,31 +18,13 @@ module Datadog
18
18
  class Tracer
19
19
  include Base
20
20
  register_as :sidekiq
21
-
22
- option :enabled, default: true
23
- option :sidekiq_service, default: 'sidekiq'
21
+ option :service_name, default: 'sidekiq'
24
22
  option :tracer, default: Datadog.tracer
25
- option :debug, default: false
26
- option :trace_agent_hostname, default: Writer::HOSTNAME
27
- option :trace_agent_port, default: Writer::PORT
28
23
 
29
24
  def initialize(options = {})
30
- # check if Rails configuration is available and use it to override
31
- # Sidekiq defaults
32
- base_config = Datadog.configuration[:sidekiq].merge(Datadog.configuration[:rails])
33
- user_config = base_config.merge(options)
34
- @tracer = user_config[:tracer]
35
- @sidekiq_service = user_config[:sidekiq_service]
36
-
37
- # set Tracer status
38
- @tracer.enabled = user_config[:enabled]
39
- Datadog::Tracer.debug_logging = user_config[:debug]
40
-
41
- # configure the Tracer instance
42
- @tracer.configure(
43
- hostname: user_config[:trace_agent_hostname],
44
- port: user_config[:trace_agent_port]
45
- )
25
+ config = Datadog.configuration[:sidekiq].merge(options)
26
+ @tracer = config[:tracer]
27
+ @sidekiq_service = config[:service_name]
46
28
  end
47
29
 
48
30
  def call(worker, job, queue)
@@ -86,7 +68,7 @@ module Datadog
86
68
  end
87
69
 
88
70
  def sidekiq_service(resource)
89
- worker_config(resource).fetch(:service, @sidekiq_service)
71
+ worker_config(resource).fetch(:service_name, @sidekiq_service)
90
72
  end
91
73
 
92
74
  def set_service_info(service)
@@ -23,10 +23,6 @@ module Datadog
23
23
  include Base
24
24
  register_as :sinatra
25
25
 
26
- option :enabled, default: true, depends_on: [:tracer] do |value|
27
- get_option(:tracer).enabled = value
28
- end
29
-
30
26
  option :service_name, default: 'sinatra', depends_on: [:tracer] do |value|
31
27
  get_option(:tracer).set_service_info(value, 'sinatra', Ext::AppTypes::WEB)
32
28
  value
@@ -34,16 +30,6 @@ module Datadog
34
30
 
35
31
  option :tracer, default: Datadog.tracer
36
32
 
37
- option(:debug, default: false) { |value| Tracer.debug_logging = value }
38
-
39
- option :trace_agent_hostname, default: Writer::HOSTNAME, depends_on: [:tracer] do |value|
40
- get_option(:tracer).configure(hostname: value)
41
- end
42
-
43
- option :trace_agent_port, default: Writer::PORT, depends_on: [:tracer] do |value|
44
- get_option(:tracer).configure(port: value)
45
- end
46
-
47
33
  def route(verb, action, *)
48
34
  # Keep track of the route name when the app is instantiated for an
49
35
  # incoming request.
@@ -8,6 +8,7 @@ module Datadog
8
8
  module Patcher
9
9
  include Base
10
10
  register_as :sucker_punch, auto_patch: true
11
+ option :service_name, default: SERVICE
11
12
 
12
13
  @patched = false
13
14
 
@@ -41,7 +42,7 @@ module Datadog
41
42
  end
42
43
 
43
44
  def add_pin!
44
- Pin.new(SERVICE, app_type: Ext::AppTypes::WORKER).tap do |pin|
45
+ Pin.new(get_option(:service_name), app_type: Ext::AppTypes::WORKER).tap do |pin|
45
46
  pin.onto(::SuckerPunch)
46
47
  end
47
48
  end
@@ -1,7 +1,7 @@
1
1
  module Datadog
2
2
  module VERSION
3
3
  MAJOR = 0
4
- MINOR = 10
4
+ MINOR = 11
5
5
  PATCH = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ddtrace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-30 00:00:00.000000000 Z
11
+ date: 2017-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -269,9 +269,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
269
269
  version: 1.9.1
270
270
  required_rubygems_version: !ruby/object:Gem::Requirement
271
271
  requirements:
272
- - - ">="
272
+ - - ">"
273
273
  - !ruby/object:Gem::Version
274
- version: '0'
274
+ version: 1.3.1
275
275
  requirements: []
276
276
  rubyforge_project:
277
277
  rubygems_version: 2.6.9