lib/ddtrace/contrib/rails/framework.rb in ddtrace-0.11.0.beta1 vs lib/ddtrace/contrib/rails/framework.rb in ddtrace-0.11.0.beta2

- old
+ new

@@ -9,67 +9,51 @@ require 'ddtrace/contrib/rails/action_view' require 'ddtrace/contrib/rails/active_record' require 'ddtrace/contrib/rails/active_support' require 'ddtrace/contrib/rails/utils' -# Rails < 3.1 -if defined?(::ActiveRecord) && !defined?(::ActiveRecord::Base.connection_config) - ActiveRecord::Base.class_eval do - class << self - def connection_config - connection_pool.spec.config - end - end - end -end - module Datadog module Contrib # Instrument Rails. module Rails # Rails framework code, used to essentially: # - handle configuration entries which are specific to Datadog tracing # - instrument parts of the framework when needed module Framework # configure Datadog settings - def self.configure(rails_config) - user_config = rails_config[:config].datadog_trace rescue {} - Datadog.configuration.use(:rails, user_config) + def self.setup config = Datadog.configuration[:rails] - tracer = config[:tracer] config[:service_name] ||= Utils.app_name + tracer = config[:tracer] Datadog.configuration.use( :rack, tracer: tracer, service_name: config[:service_name], - distributed_tracing_enabled: config[:distributed_tracing_enabled] + distributed_tracing: config[:distributed_tracing] ) config[:controller_service] ||= config[:service_name] config[:cache_service] ||= "#{config[:service_name]}-cache" tracer.set_service_info(config[:controller_service], 'rails', Ext::AppTypes::WEB) tracer.set_service_info(config[:cache_service], 'rails', Ext::AppTypes::CACHE) + set_database_service # By default, default service would be guessed from the script # being executed, but here we know better, get it from Rails config. tracer.default_service = config[:service_name] + end - if defined?(::ActiveRecord) - begin - # set default database service details and store it in the configuration - conn_cfg = ::ActiveRecord::Base.connection_config() - adapter_name = Datadog::Contrib::Rails::Utils.normalize_vendor(conn_cfg[:adapter]) - config[:database_service] ||= "#{config[:service_name]}-#{adapter_name}" - tracer.set_service_info(config[:database_service], adapter_name, Ext::AppTypes::DB) - rescue StandardError => e - Datadog::Tracer.log.warn("Unable to get database config (#{e}), skipping ActiveRecord instrumentation") - end - end + def self.set_database_service + return unless defined?(::ActiveRecord) - # update global configurations - ::Rails.configuration.datadog_trace = Datadog.registry[:rails].to_h + config = Datadog.configuration[:rails] + adapter_name = Utils.adapter_name + config[:database_service] ||= "#{config[:service_name]}-#{adapter_name}" + config[:tracer].set_service_info(config[:database_service], adapter_name, Ext::AppTypes::DB) + rescue => e + Tracer.log.warn("Unable to get database config (#{e}), skipping ActiveRecord instrumentation") end end end end end