ddtrace 0.10.0 → 0.11.0.beta1

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: 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