Module: NewRelic::Coerce
- Included in:
- Agent::RequestSampler, Agent::SqlTrace, Agent::Threading::BacktraceNode, Agent::Threading::ThreadProfile, MetricData, NoticedError, TransactionSample, TransactionSample::Segment
- Defined in:
- lib/new_relic/coerce.rb
Overview
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
Instance Method Summary collapse
- #float(value, context = nil) ⇒ Object
- #int(value, context = nil) ⇒ Object
- #int_or_nil(value, context = nil) ⇒ Object
- #log_failure(value, type, context, error) ⇒ Object
- #string(value, context = nil) ⇒ Object
Instance Method Details
#float(value, context = nil) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/new_relic/coerce.rb', line 28 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 |
#int(value, context = nil) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/new_relic/coerce.rb', line 13 def int(value, context=nil) Integer(value) rescue => error log_failure(value, Integer, context, error) 0 end |
#int_or_nil(value, context = nil) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/new_relic/coerce.rb', line 20 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) ⇒ Object
45 46 47 48 49 |
# File 'lib/new_relic/coerce.rb', line 45 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 |
#string(value, context = nil) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/new_relic/coerce.rb', line 37 def string(value, context=nil) return value if value.nil? String(value) rescue => error log_failure(value.class, String, context, error) "" end |