Skip to content

DataDog/dd-trace-rb

Repository files navigation

dd-trace-rb

CircleCI

Documentation

You can find the latest documentation in the Datadog's private repository

Getting started

Install

If you're using Bundler, just update your Gemfile as follows:

    source 'https://rubygems.org'

    # tracing gem
    gem 'ddtrace', :source => 'http://gems.datadoghq.com/trace/'

Quickstart (manual instrumentation)

If you aren't using a supported framework instrumentation, you may want to to manually instrument your code. Adding tracing to your code is very simple. As an example, let’s imagine we have a web server and we want to trace requests to the home page:

    require 'ddtrace'
    require 'sinatra'
    require 'activerecord'

    # a generic tracer that you can use across your application
    tracer = Datadog.tracer

    get '/' do
      tracer.trace('web.request') do |span|
        # set some span metadata
        span.service = 'my-web-site'
        span.resource = '/'
        span.set_tag('http.method', request.request_method)

        # trace the activerecord call
        tracer.trace('posts.fetch') do
          @posts = Posts.order(created_at: :desc).limit(10)
        end

        # trace the template rendering
        tracer.trace('template.render') do
          erb :index
        end
      end
    end

Development

Testing

You can launch all tests using the following rake command:

$ rake test                     # tracer tests
$ appraisal rails-3 rake rails  # rails 3 integration tests
$ appraisal rails-4 rake rails  # rails 4 integration tests
$ appraisal rails-5 rake rails  # rails 5 integration tests
$ appraisal rake rails          # tests for all rails versions

The test suite requires many backing services (PostgreSQL, MySQL, Redis, ...) and we're using docker and docker-compose to start these services in the CI. To launch properly the test matrix, please install docker and docker-compose using the instructions provided by your platform. Then launch them through:

$ docker-compose up -d

We also enforce the Ruby community-driven style guide through Rubocop. Simply launch:

$ rake rubocop