Sha256: fb268affdc1e363cd1a9219a661d4d977cd4d678e9a1f1643dda0e286121d196

Contents?: true

Size: 1.07 KB

Versions: 12

Compression:

Stored size: 1.07 KB

Contents

module NewRelic
  # We really don't want to send bad values to the collector, and it doesn't
  # accept types like Rational that have occasionally slipped into our data.
  #
  # These methods are intended to safely coerce things into the form we want,
  # to provide documentation of expected types on to_collector_array methods,
  # and to log failures if totally invalid data gets into outgoing data
  module Coerce
    def int(value, context=nil)
      Integer(value)
    rescue => error
      log_failure(value, Integer, context, error)
      0
    end

    def float(value, context=nil)
      Float(value)
    rescue => error
      log_failure(value, Float, context, error)
      0.0
    end

    def string(value, context=nil)
      return value if value.nil?
      String(value)
    rescue => error
      log_failure(value.class, String, context, error)
      ""
    end

    def log_failure(value, type, context, error)
      msg = "Unable to convert '#{value}' to #{type}"
      msg += " in context '#{context}'" if context
      NewRelic::Agent.logger.warn(msg, error)
    end
  end
end

Version data entries

12 entries across 12 versions & 3 rubygems

Version Path
wd_newrelic_rpm-3.5.8 lib/new_relic/coerce.rb
sundawg_newrelic_rpm-3.5.8.2 lib/new_relic/coerce.rb
sundawg_newrelic_rpm-3.5.8.1 lib/new_relic/coerce.rb
newrelic_rpm-3.5.8.72 lib/new_relic/coerce.rb
newrelic_rpm-3.5.8.70 lib/new_relic/coerce.rb
newrelic_rpm-3.5.8.64.beta lib/new_relic/coerce.rb
newrelic_rpm-3.5.7.59 lib/new_relic/coerce.rb
newrelic_rpm-3.5.7.59.beta lib/new_relic/coerce.rb
newrelic_rpm-3.5.7.58.beta lib/new_relic/coerce.rb
wd_newrelic_rpm-3.5.6 lib/new_relic/coerce.rb
newrelic_rpm-3.5.7.57.beta lib/new_relic/coerce.rb
newrelic_rpm-3.5.6.55 lib/new_relic/coerce.rb