From 285fef51d3a1d62b19ccbda43462ff0f1a49814f Mon Sep 17 00:00:00 2001 From: Josh Kalderimis Date: Mon, 20 Jun 2011 15:53:43 +0200 Subject: [PATCH] instead of using the json gem, or trying to require yajl, lets use multi json which takes care of this for us and includes a vendored json implementation if one is not available --- lib/resque.rb | 6 ------ lib/resque/helpers.rb | 24 +++++++----------------- resque.gemspec | 2 +- 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/lib/resque.rb b/lib/resque.rb index 20fb7e4f1..4b6e1dc0e 100644 --- a/lib/resque.rb +++ b/lib/resque.rb @@ -1,11 +1,5 @@ require 'redis/namespace' -begin - require 'yajl' -rescue LoadError - require 'json' -end - require 'resque/version' require 'resque/errors' diff --git a/lib/resque/helpers.rb b/lib/resque/helpers.rb index 3ac57eeec..8150b5876 100644 --- a/lib/resque/helpers.rb +++ b/lib/resque/helpers.rb @@ -1,3 +1,5 @@ +require 'multi_json' + module Resque # Methods used by various classes in Resque. module Helpers @@ -11,29 +13,17 @@ def redis # Given a Ruby object, returns a string suitable for storage in a # queue. def encode(object) - if defined? Yajl - Yajl::Encoder.encode(object) - else - object.to_json - end + ::MultiJson.encode(object) end # Given a string, returns a Ruby object. def decode(object) return unless object - if defined? Yajl - begin - Yajl::Parser.parse(object, :check_utf8 => false) - rescue Yajl::ParseError => e - raise DecodeException, e - end - else - begin - JSON.parse(object) - rescue JSON::ParserError => e - raise DecodeException, e - end + begin + ::MultiJson.decode(object) + rescue ::MultiJson::DecodeError => e + raise DecodeException, e end end diff --git a/resque.gemspec b/resque.gemspec index 8c4df9651..a3c913b9e 100644 --- a/resque.gemspec +++ b/resque.gemspec @@ -24,7 +24,7 @@ Gem::Specification.new do |s| s.add_dependency "redis-namespace", "~> 1.0.2" s.add_dependency "vegas", "~> 0.1.2" s.add_dependency "sinatra", ">= 0.9.2" - s.add_dependency "json", ">= 1.4.6", "< 1.6" + s.add_dependency "multi_json", "~> 1.0" s.description = <