Module: DatadogRails

Defined in:
lib/datadog_rails.rb,
lib/datadog_rails/railtie.rb,
lib/datadog_rails/version.rb,
lib/datadog_rails/configuration.rb

Defined Under Namespace

Classes: Configuration, Railtie

Constant Summary collapse

CLEAR =

Embed in a String to clear all previous ANSI sequences.

"\e[0m"
BOLD =
"\e[1m"
BLACK =

Colors

"\e[30m"
RED =
"\e[31m"
GREEN =
"\e[32m"
YELLOW =
"\e[33m"
BLUE =
"\e[34m"
MAGENTA =
"\e[35m"
CYAN =
"\e[36m"
WHITE =
"\e[37m"
VERSION =
"0.2.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.clientObject



34
35
36
# File 'lib/datadog_rails.rb', line 34

def client
  @client ||= Statsd.new configuration.dogstatsd_host, configuration.dogstatsd_port
end

.configurationObject



24
25
26
# File 'lib/datadog_rails.rb', line 24

def configuration
  @configuration ||= DatadogRails::Configuration.new
end

Class Method Details

.color(text, color, bold = false) ⇒ Object



62
63
64
65
# File 'lib/datadog_rails.rb', line 62

def color(text, color, bold=false)
  bold  = bold ? BOLD : ""
  "#{bold}#{color}#{text}#{CLEAR}"
end

.configure {|configuration| ... } ⇒ Object

Yields:



28
29
30
31
32
# File 'lib/datadog_rails.rb', line 28

def configure
  yield(configuration)

  self.client = nil
end

.log_event(payload) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/datadog_rails.rb', line 50

def log_event(payload)
  key_name = "#{configuration.application_name}.#{payload[:measurement]}"

  info = "\n"
  info << " \tmethod => #{payload[:action]}\n"
  info << " \tmetric => #{key_name}\n"
  info << " \tvalue  => #{payload[:value]}\n"
  info << " \ttags   => #{payload[:tags]}"

  Rails.logger.info color(" DatadogRails", GREEN, true) + color(info, WHITE, true)
end

.send_event_to_statsd(payload) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/datadog_rails.rb', line 38

def send_event_to_statsd(payload)
  key_name = "#{configuration.application_name}.#{payload[:measurement]}"

  if payload[:action] == :increment
    client.increment key_name, :tags => payload[:tags]
  else
    client.histogram key_name, payload[:value], :tags => payload[:tags]
  end

  log_event(payload) if configuration.debug?
end