Sha256: 6581eb4b1731169b6f240b0c0128496e49a69280515bdb4bff89151aa2beceac

Contents?: true

Size: 1.93 KB

Versions: 16

Compression:

Stored size: 1.93 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.


module NewRelic
  # A singleton for shared generic helper methods
  module Helper
    extend self

    # confirm a string is correctly encoded (in >= 1.9)
    # If not force the encoding to ASCII-8BIT (binary)
    if RUBY_VERSION >= '1.9'
      def correctly_encoded(string)
        return string unless string.is_a? String
        string.valid_encoding? ? string : string.force_encoding("ASCII-8BIT")
      end
    else
      #noop
      def correctly_encoded(string)
        string
      end
    end

    def instance_method_visibility(klass, method_name)
      if klass.private_instance_methods.map{|s|s.to_sym}.include? method_name.to_sym
        :private
      elsif klass.protected_instance_methods.map{|s|s.to_sym}.include? method_name.to_sym
        :protected
      else
        :public
      end
    end

    def time_to_millis(time)
      (time.to_f * 1000).round
    end

    def milliseconds_to_seconds(milliseconds)
      milliseconds / 1000.0
    end
  end

  # Load the JSON library from the standard library.
  def self::load_stdlib_json
    # Don't even try to use 1.9.1's json.
    return false if RUBY_VERSION == '1.9.1'

    require 'json'
    define_method( :json_dump, &::JSON.method(:dump) )
    define_method( :json_load, &::JSON.method(:parse) )

    return true
  rescue LoadError
    NewRelic::Agent.logger.debug "%p while loading JSON library: %s" % [ err, err.message ] if
      defined?( NewRelic::Agent ) && NewRelic::Agent.respond_to?( :logger )
    return false
  end


  # Load the fallback JSON library
  def self::load_okjson
    require 'new_relic/okjson'
    define_method( :json_dump, &::NewRelic::OkJson.method(:encode) )
    define_method( :json_load, &::NewRelic::OkJson.method(:decode) )
  end


  load_stdlib_json or load_okjson
  module_function :json_dump, :json_load

end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
newrelic_rpm-3.6.5.130 lib/new_relic/helper.rb
newrelic_rpm-3.6.4.122 lib/new_relic/helper.rb
newrelic_rpm-3.6.4.113.beta lib/new_relic/helper.rb
newrelic_rpm-3.6.3.111 lib/new_relic/helper.rb
newrelic_rpm-3.6.3.106 lib/new_relic/helper.rb
newrelic_rpm-3.6.3.105.beta lib/new_relic/helper.rb
newrelic_rpm-3.6.3.104 lib/new_relic/helper.rb
newrelic_rpm-3.6.3.103.beta lib/new_relic/helper.rb
newrelic_rpm-3.6.2.96 lib/new_relic/helper.rb
newrelic_rpm-3.6.2.90.beta lib/new_relic/helper.rb
newrelic_rpm-3.6.1.88 lib/new_relic/helper.rb
newrelic_rpm-3.6.1.87 lib/new_relic/helper.rb
newrelic_rpm-3.6.1.86.beta lib/new_relic/helper.rb
newrelic_rpm-3.6.1.85.beta lib/new_relic/helper.rb
newrelic_rpm-3.6.0.83 lib/new_relic/helper.rb
newrelic_rpm-3.6.0.78 lib/new_relic/helper.rb