diff --git a/lib/resque/helpers.rb b/lib/resque/helpers.rb index 417d6b3b5..3ac57eeec 100644 --- a/lib/resque/helpers.rb +++ b/lib/resque/helpers.rb @@ -1,6 +1,8 @@ module Resque # Methods used by various classes in Resque. module Helpers + class DecodeException < StandardError; end + # Direct access to the Redis instance. def redis Resque.redis @@ -23,12 +25,14 @@ def decode(object) if defined? Yajl begin Yajl::Parser.parse(object, :check_utf8 => false) - rescue Yajl::ParseError + rescue Yajl::ParseError => e + raise DecodeException, e end else begin JSON.parse(object) - rescue JSON::ParserError + rescue JSON::ParserError => e + raise DecodeException, e end end end diff --git a/test/resque_test.rb b/test/resque_test.rb index 975aa5203..05634e295 100644 --- a/test/resque_test.rb +++ b/test/resque_test.rb @@ -233,6 +233,8 @@ end test "decode bad json" do - assert_nil Resque.decode("{\"error\":\"Module not found \\u002\"}") + assert_raises Resque::Helpers::DecodeException do + Resque.decode("{\"error\":\"Module not found \\u002\"}") + end end end