From f8c3e5ea22f312239f3022c3db61d5955eebe839 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Wed, 12 Aug 2026 07:59:39 +0200 Subject: [PATCH] Make multi_json compatible with json 3.x Ref: https://github.com/ruby/json/releases/tag/v3.0.0.rc1 Unknown keyword arguments will raise `ArgumentError`. - `quirks_mode:` no longer existing since json 2.0 (~2011). - `create_additions` no longer existing in json 3.0. --- lib/multi_json/adapters/json_gem.rb | 4 ++-- test/support/adapter_tests.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/multi_json/adapters/json_gem.rb b/lib/multi_json/adapters/json_gem.rb index 1d4105e0..3912e1da 100644 --- a/lib/multi_json/adapters/json_gem.rb +++ b/lib/multi_json/adapters/json_gem.rb @@ -10,7 +10,7 @@ class JsonGem < Adapter # Exception raised when JSON parsing fails ParseError = ::JSON::ParserError - defaults :load, create_additions: false, quirks_mode: true + defaults :load, create_additions: false, quirks_mode: true if JSON::VERSION.to_i < 3 # simplecov:disable PRETTY_STATE_PROTOTYPE = { indent: " ", @@ -44,7 +44,7 @@ def load(string, options = {}) raise ::JSON::ParserError, "Invalid UTF-8 byte sequence in JSON input" unless string.valid_encoding? end - ::JSON.parse(string, options) + ::JSON.parse(string, **options) end # Serialize a Ruby object to JSON diff --git a/test/support/adapter_tests.rb b/test/support/adapter_tests.rb index aa141d1f..4be500b7 100644 --- a/test/support/adapter_tests.rb +++ b/test/support/adapter_tests.rb @@ -21,7 +21,7 @@ def subject end def test_does_not_modify_argument_hashes_when_loading - options = {symbolize_names: true, pretty: false, adapter: :json_gem} + options = {symbolize_names: true, adapter: :json_gem} original = options.dup MultiJSON.load("{}", options) @@ -29,7 +29,7 @@ def test_does_not_modify_argument_hashes_when_loading end def test_does_not_modify_argument_hashes_when_dumping - options = {symbolize_names: true, pretty: false, adapter: :json_gem} + options = {pretty: false, adapter: :json_gem} original = options.dup MultiJSON.dump([42], options)