diff options
author | Steve Klabnik <steve@steveklabnik.com> | 2013-02-24 20:29:26 -0800 |
---|---|---|
committer | Steve Klabnik <steve@steveklabnik.com> | 2013-02-24 20:29:26 -0800 |
commit | 15d693df93cd1ec0fc27d617582d2f73036c335e (patch) | |
tree | bb04ebbc6dec681251268b8757c133d8caea4baf | |
parent | 0bc301ef7d8a2ded89d412fe4193594f0523fa99 (diff) | |
parent | 046e27a7338f2961c10e9d133e0e2229b51c2ba8 (diff) | |
download | rails-15d693df93cd1ec0fc27d617582d2f73036c335e.tar.gz rails-15d693df93cd1ec0fc27d617582d2f73036c335e.tar.bz2 rails-15d693df93cd1ec0fc27d617582d2f73036c335e.zip |
Merge pull request #8815 from bogdan/simplified-to-json-args
AS JSON encoder: remove monkey patch of Array
-rw-r--r-- | activesupport/lib/active_support/json/encoding.rb | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/activesupport/lib/active_support/json/encoding.rb b/activesupport/lib/active_support/json/encoding.rb index 9bf1ea35b3..8f5db5968c 100644 --- a/activesupport/lib/active_support/json/encoding.rb +++ b/activesupport/lib/active_support/json/encoding.rb @@ -38,7 +38,6 @@ module ActiveSupport class CircularReferenceError < StandardError; end class Encoder - attr_reader :options def initialize(options = nil) @options = options || {} @@ -63,9 +62,9 @@ module ActiveSupport if value.is_a?(Array) || value.is_a?(Hash) # hashes and arrays need to get encoder in the options, so that # they can detect circular references. - options.merge(:encoder => self) + @options.merge(:encoder => self) else - options.dup + @options.dup end end @@ -253,18 +252,6 @@ end module Enumerable def as_json(options = nil) #:nodoc: - to_a.as_json(options) - end -end - -class Range - def as_json(options = nil) #:nodoc: - to_s - end -end - -class Array - def as_json(options = nil) #:nodoc: # use encoder as a proxy to call as_json on all elements, to protect from circular references encoder = options && options[:encoder] || ActiveSupport::JSON::Encoding::Encoder.new(options) map { |v| encoder.as_json(v, options) } @@ -276,6 +263,12 @@ class Array end end +class Range + def as_json(options = nil) #:nodoc: + to_s + end +end + class Hash def as_json(options = nil) #:nodoc: # create a subset of the hash by applying :only or :except |