module NewRelic::Coerce
Public Instance Methods
boolean_int!(value)
click to toggle source
Use when you plan to perform a boolean check using the integer 1 for true and the integer 0 for false String values will be converted to 0
# File lib/new_relic/coerce.rb, line 75 def boolean_int!(value) value.to_i end
float(value, context = nil)
click to toggle source
# File lib/new_relic/coerce.rb, line 32 def float(value, context = nil) result = Float(value) raise "Value #{result.inspect} is not finite." unless result.finite? result rescue => error log_failure(value, Float, context, error) 0.0 end
float!(value, precision = NewRelic::PRIORITY_PRECISION)
click to toggle source
# File lib/new_relic/coerce.rb, line 79 def float!(value, precision = NewRelic::PRIORITY_PRECISION) return nil unless value_or_nil(value) value.to_f.round(precision) end
int(value, context = nil)
click to toggle source
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 non-bang 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
# File lib/new_relic/coerce.rb, line 16 def int(value, context = nil) Integer(value) rescue => error log_failure(value, Integer, context, error) 0 end
int!(value)
click to toggle source
# File lib/new_relic/coerce.rb, line 66 def int!(value) return nil unless value_or_nil(value) Integer(value) end
int_or_nil(value, context = nil)
click to toggle source
# File lib/new_relic/coerce.rb, line 23 def int_or_nil(value, context = nil) return nil if value.nil? Integer(value) rescue => error log_failure(value, Integer, context, error) nil end
log_failure(value, type, context, error)
click to toggle source
# File lib/new_relic/coerce.rb, line 91 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
scalar(val)
click to toggle source
# File lib/new_relic/coerce.rb, line 51 def scalar(val) case val when String, Integer, TrueClass, FalseClass, NilClass val when Float if val.finite? val end when Symbol val.to_s else "#<#{val.class.to_s}>" end end
string(value, context = nil)
click to toggle source
# File lib/new_relic/coerce.rb, line 42 def string(value, context = nil) return value if value.nil? String(value) rescue => error log_failure(value.class, String, context, error) EMPTY_STR end
value_or_nil(value)
click to toggle source
# File lib/new_relic/coerce.rb, line 85 def value_or_nil(value) return nil if value.nil? || (value.respond_to?(:empty?) && value.empty?) value end