diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2017-10-23 15:33:16 -0400 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2017-10-23 15:33:16 -0400 |
commit | 9c5c0596f137c396b6356416a3f92a3a082c53f6 (patch) | |
tree | 2aeea8ba25b27f03969a4d5e253e662b48dbcacd /activesupport | |
parent | c085a2a1a2a9ecfe8f9acfc177798046087c269e (diff) | |
parent | 813f8e333dabb2050d6b668b7bdd68b4979e8af4 (diff) | |
download | rails-9c5c0596f137c396b6356416a3f92a3a082c53f6.tar.gz rails-9c5c0596f137c396b6356416a3f92a3a082c53f6.tar.bz2 rails-9c5c0596f137c396b6356416a3f92a3a082c53f6.zip |
Merge pull request #30953 from rohitpaulk/fix-io-to-json
Fix #to_json for IO objects, fixes #26132
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/CHANGELOG.md | 8 | ||||
-rw-r--r-- | activesupport/lib/active_support/core_ext/object/json.rb | 6 | ||||
-rw-r--r-- | activesupport/test/json/encoding_test.rb | 4 |
3 files changed, 18 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index f57b9ce5ab..8e8e9b9440 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,3 +1,11 @@ +* `IO#to_json` now returns the `to_s` representation, rather than + attempting to convert to an array. This fixes a bug where `IO#to_json` + would raise an `IOError` when called on an unreadable object. + + Fixes #26132. + + *Paul Kuruvilla* + * Remove deprecated `halt_callback_chains_on_return_false` option. *Rafael Mendonça França* diff --git a/activesupport/lib/active_support/core_ext/object/json.rb b/activesupport/lib/active_support/core_ext/object/json.rb index 0a3b875f24..f7c623fe13 100644 --- a/activesupport/lib/active_support/core_ext/object/json.rb +++ b/activesupport/lib/active_support/core_ext/object/json.rb @@ -135,6 +135,12 @@ module Enumerable end end +class IO + def as_json(options = nil) #:nodoc: + to_s + end +end + class Range def as_json(options = nil) #:nodoc: to_s diff --git a/activesupport/test/json/encoding_test.rb b/activesupport/test/json/encoding_test.rb index eafa2e1712..96ad8dfbdb 100644 --- a/activesupport/test/json/encoding_test.rb +++ b/activesupport/test/json/encoding_test.rb @@ -454,6 +454,10 @@ EXPECTED assert_equal '{"number":null}', NaNNumber.new.to_json end + def test_to_json_works_on_io_objects + assert_equal STDOUT.to_s.to_json, STDOUT.to_json + end + private def object_keys(json_object) |