From 48c8d0fdbd5a5c4c8f24136aac42d8d34aac2d34 Mon Sep 17 00:00:00 2001 From: Marcio Toshio Date: Wed, 14 Oct 2026 12:05:04 -0400 Subject: [PATCH] Support json 3 json 3.0 removed the create_additions and quirks_mode options, so passing them raises ArgumentError. Que.deserialize_json passed create_additions: false, which broke deserializing every job's args. create_additions already defaults to false in JSON.parse on json 2, and quirks_mode has had no effect since json 2.0, so dropping both keeps behaviour unchanged on json 2. Co-Authored-By: Claude Opus 5.5 --- lib/que/utils/json_serialization.rb | 3 +-- spec/que/migrations.current_schema_spec.rb | 6 +++--- spec/que/migrations_spec.rb | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/que/utils/json_serialization.rb b/lib/que/utils/json_serialization.rb index a772ee87..ac181ec9 100644 --- a/lib/que/utils/json_serialization.rb +++ b/lib/que/utils/json_serialization.rb @@ -13,8 +13,7 @@ def serialize_json(object) end def deserialize_json(json) - # Allowing `create_additions` would be a security vulnerability. - JSON.parse(json, symbolize_names: true, create_additions: false) + JSON.parse(json, symbolize_names: true) end end end diff --git a/spec/que/migrations.current_schema_spec.rb b/spec/que/migrations.current_schema_spec.rb index e4d21384..78ef6610 100644 --- a/spec/que/migrations.current_schema_spec.rb +++ b/spec/que/migrations.current_schema_spec.rb @@ -19,7 +19,7 @@ def assert_constraint_error(name, &block) ].each do |args| assert_constraint_error 'valid_args' do DB[:que_jobs]. - insert(job_class: 'Que::Job', job_schema_version: Que.job_schema_version, args: JSON.generate(args, quirks_mode: true)) + insert(job_class: 'Que::Job', job_schema_version: Que.job_schema_version, args: JSON.generate(args)) end end end @@ -186,12 +186,12 @@ def assert_constraint_error(name, &block) end assert_constraint_error 'valid_value' do - value_attrs[:value] = JSON.generate(5, quirks_mode: true) + value_attrs[:value] = JSON.generate(5) DB[:que_values].insert(value_attrs) end assert_constraint_error 'valid_value' do - value_attrs[:value] = JSON.generate("string", quirks_mode: true) + value_attrs[:value] = JSON.generate("string") DB[:que_values].insert(value_attrs) end end diff --git a/spec/que/migrations_spec.rb b/spec/que/migrations_spec.rb index 02811fae..ce719500 100644 --- a/spec/que/migrations_spec.rb +++ b/spec/que/migrations_spec.rb @@ -161,7 +161,7 @@ def assert_up_migration(v3: {}, v4: {}) version_3 do # The table primary key is different at this schema version, so provide a # returning clause so that Sequel doesn't get confused. - DB[:que_jobs].returning(:job_id).insert(v3_default.merge(v3).tap{|j| j[:args] = JSON.generate(j[:args], quirks_mode: true)}) + DB[:que_jobs].returning(:job_id).insert(v3_default.merge(v3).tap{|j| j[:args] = JSON.generate(j[:args])}) end assert_equal(