diff --git a/.travis.yml b/.travis.yml index 2df777a..f5bbe8f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ rvm: - 2.1.7 - 2.2.3 - 2.3.0 + - 2.3.1 - jruby-19mode # - rbx - ruby-head diff --git a/lib/librato/metrics/smart_json.rb b/lib/librato/metrics/smart_json.rb index bf8c1a2..136cb02 100644 --- a/lib/librato/metrics/smart_json.rb +++ b/lib/librato/metrics/smart_json.rb @@ -1,21 +1,23 @@ module Librato module Metrics class SmartJSON - extend SingleForwardable - if defined?(::MultiJson) - # MultiJSON >= 1.3.0 - if MultiJson.respond_to?(:load) - def_delegator MultiJson, :load, :read - else - def_delegator MultiJson, :decode, :read + def self.read(json) + # MultiJSON >= 1.3.0 + if MultiJson.respond_to?(:load) + MultiJson.load(json) + else + MultiJson.decode(json) + end end - # MultiJSON <= 1.2.0 - if MultiJson.respond_to?(:dump) - def_delegator MultiJson, :dump, :write - else - def_delegator MultiJson, :encode, :write + def self.write(json) + # MultiJSON <= 1.2.0 + if MultiJson.respond_to?(:dump) + MultiJson.dump(json) + else + MultiJson.encode(json) + end end def self.handler @@ -24,8 +26,13 @@ def self.handler else require "json" - def_delegator JSON, :parse, :read - def_delegator JSON, :generate, :write + def self.read(json) + JSON.parse(json) + end + + def self.write(json) + JSON.generate(json) + end def self.handler :json