Module: Datadog::Utils

Defined in:
lib/ddtrace/utils.rb

Overview

Utils contains low-level utilities, typically to provide pseudo-random trace IDs.

Constant Summary collapse

STRING_PLACEHOLDER =
''.encode(::Encoding::UTF_8).freeze

Class Method Summary collapse

Class Method Details

.next_idObject

Return a span id



10
11
12
13
14
# File 'lib/ddtrace/utils.rb', line 10

def self.next_id
  reset! if was_forked?

  @rnd.rand(Datadog::Span::MAX_ID)
end

.truncate(value, size, omission = '...') ⇒ Object



29
30
31
32
33
34
35
# File 'lib/ddtrace/utils.rb', line 29

def self.truncate(value, size, omission = '...')
  string = value.to_s

  return string if string.size <= size

  string.slice(0, size - omission.size) + omission
end

.utf8_encode(str, options = {}) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/ddtrace/utils.rb', line 37

def self.utf8_encode(str, options = {})
  str = str.to_s

  if options[:binary]
    # This option is useful for "gracefully" displaying binary data that
    # often contains text such as marshalled objects
    str.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
  elsif str.encoding == ::Encoding::UTF_8
    str
  else
    str.encode(::Encoding::UTF_8)
  end
rescue => e
  Tracer.log.debug("Error encoding string in UTF-8: #{e}")

  options.fetch(:placeholder, STRING_PLACEHOLDER)
end