Permalink
Browse files

Fix invalid MultiJson API detection (closes #82)

`#load` is defined in Kernel and inherited in every object, thus Object.respond_to?(:load) will always return true.

MultiJson switched to load/dump from decode/encode. Thus it's safe to use a single check for both encoding and decoding methods.
  • Loading branch information...
weppos committed May 7, 2012
1 parent 121e97d commit 5b87c9b7ece87d9d17faa18c95f70a3c40e69406
Showing with 5 additions and 7 deletions.
  1. +5 −7 lib/execjs/external_runtime.rb
@@ -85,21 +85,19 @@ def encode_unicode_codepoints(str)
end
end
- if MultiJson.respond_to?(:load)
+ if MultiJson.respond_to?(:dump)
def json_decode(obj)
MultiJson.load(obj)
end
- else
- def json_decode(obj)
- MultiJson.decode(obj)
- end
- end
- if MultiJson.respond_to?(:dump)
def json_encode(obj)
MultiJson.dump(obj)
end
else
+ def json_decode(obj)
+ MultiJson.decode(obj)
+ end
+
def json_encode(obj)
MultiJson.encode(obj)
end

0 comments on commit 5b87c9b

Please sign in to comment.