From 84684e72c99735d7e2fbbd0fc97ac612fa401038 Mon Sep 17 00:00:00 2001 From: Jan Graichen Date: Sat, 20 Jun 2026 12:59:55 +0200 Subject: [PATCH 1/3] chore: update deprecated MultiJSON methods --- acfs.gemspec | 2 +- lib/acfs/middleware/json.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/acfs.gemspec b/acfs.gemspec index 29ee404..ee80026 100644 --- a/acfs.gemspec +++ b/acfs.gemspec @@ -31,7 +31,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'actionpack', '>= 7.0' spec.add_dependency 'activemodel', '>= 7.0' spec.add_dependency 'activesupport', '>= 7.0' - spec.add_dependency 'multi_json', '~> 1.0' + spec.add_dependency 'multi_json', '~> 1.21' spec.add_dependency 'opentelemetry-api', '~> 1.0' spec.add_dependency 'opentelemetry-common' spec.add_dependency 'rack' diff --git a/lib/acfs/middleware/json.rb b/lib/acfs/middleware/json.rb index 3c47885..e9d1dc1 100644 --- a/lib/acfs/middleware/json.rb +++ b/lib/acfs/middleware/json.rb @@ -12,12 +12,12 @@ def mime end def encode(data) - ::MultiJson.dump(data) + ::MultiJSON.generate(data) end def decode(body) - ::MultiJson.load(body) - rescue ::MultiJson::ParseError => e + ::MultiJSON.parse(body) + rescue ::MultiJSON::ParseError => e raise ::JSON::ParserError.new(e) end end From 61f9844ed4cf35fc51b902e2b4884430bf842551 Mon Sep 17 00:00:00 2001 From: Jan Graichen Date: Sat, 20 Jun 2026 13:29:24 +0200 Subject: [PATCH 2/3] chore: Remove unused dev gems --- Gemfile | 12 ++---------- gemfiles/rails_7.2.gemfile | 11 +++-------- gemfiles/rails_8.0.gemfile | 11 +++-------- gemfiles/rails_8.1.gemfile | 11 +++-------- gemfiles/rails_master.gemfile | 19 +++++++------------ 5 files changed, 18 insertions(+), 46 deletions(-) diff --git a/Gemfile b/Gemfile index 45b9175..45c6ef0 100644 --- a/Gemfile +++ b/Gemfile @@ -2,14 +2,11 @@ source 'https://rubygems.org' -git_source(:github) {|repo| "https://github.com/#{repo}.git" } - gemspec # Development gems # gem 'appraisal' -gem 'json', '~> 2.1' gem 'rake' gem 'rspec', '~> 3.6' gem 'rspec-collection_matchers' @@ -20,17 +17,12 @@ gem 'rake-release', '~> 1.0' # Doc group :development do - gem 'redcarpet', platform: :ruby - gem 'yard', '~> 0.9.24' - gem 'rubocop-config', github: 'jgraichen/rubocop-config', tag: 'v14' end group :test do gem 'msgpack', '~> 1.1' - gem 'pry' - gem 'pry-byebug' - gem 'simplecov' - gem 'simplecov-cobertura' + gem 'simplecov', require: false + gem 'simplecov-cobertura', require: false end diff --git a/gemfiles/rails_7.2.gemfile b/gemfiles/rails_7.2.gemfile index 147ae8a..1fc3bda 100644 --- a/gemfiles/rails_7.2.gemfile +++ b/gemfiles/rails_7.2.gemfile @@ -3,7 +3,6 @@ source "https://rubygems.org" gem "appraisal" -gem "json", "~> 2.1" gem "rake" gem "rspec", "~> 3.6" gem "rspec-collection_matchers" @@ -16,17 +15,13 @@ gem "actionpack", "~> 7.2.0" gem "railties", "~> 7.2.0", require: "rails" group :development do - gem "redcarpet", platform: :ruby - gem "yard", "~> 0.9.24" - gem "rubocop-config", tag: "v14", git: "https://github.com/jgraichen/rubocop-config.git" + gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14" end group :test do gem "msgpack", "~> 1.1" - gem "pry" - gem "pry-byebug" - gem "simplecov" - gem "simplecov-cobertura" + gem "simplecov", require: false + gem "simplecov-cobertura", require: false end gemspec path: "../" diff --git a/gemfiles/rails_8.0.gemfile b/gemfiles/rails_8.0.gemfile index 149c11f..629ec73 100644 --- a/gemfiles/rails_8.0.gemfile +++ b/gemfiles/rails_8.0.gemfile @@ -3,7 +3,6 @@ source "https://rubygems.org" gem "appraisal" -gem "json", "~> 2.1" gem "rake" gem "rspec", "~> 3.6" gem "rspec-collection_matchers" @@ -16,17 +15,13 @@ gem "actionpack", "~> 8.0.0" gem "railties", "~> 8.0.0", require: "rails" group :development do - gem "redcarpet", platform: :ruby - gem "yard", "~> 0.9.24" - gem "rubocop-config", tag: "v14", git: "https://github.com/jgraichen/rubocop-config.git" + gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14" end group :test do gem "msgpack", "~> 1.1" - gem "pry" - gem "pry-byebug" - gem "simplecov" - gem "simplecov-cobertura" + gem "simplecov", require: false + gem "simplecov-cobertura", require: false end gemspec path: "../" diff --git a/gemfiles/rails_8.1.gemfile b/gemfiles/rails_8.1.gemfile index ea8a1c1..aeee44e 100644 --- a/gemfiles/rails_8.1.gemfile +++ b/gemfiles/rails_8.1.gemfile @@ -3,7 +3,6 @@ source "https://rubygems.org" gem "appraisal" -gem "json", "~> 2.1" gem "rake" gem "rspec", "~> 3.6" gem "rspec-collection_matchers" @@ -16,17 +15,13 @@ gem "actionpack", "~> 8.1.0" gem "railties", "~> 8.1.0", require: "rails" group :development do - gem "redcarpet", platform: :ruby - gem "yard", "~> 0.9.24" - gem "rubocop-config", tag: "v14", git: "https://github.com/jgraichen/rubocop-config.git" + gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14" end group :test do gem "msgpack", "~> 1.1" - gem "pry" - gem "pry-byebug" - gem "simplecov" - gem "simplecov-cobertura" + gem "simplecov", require: false + gem "simplecov-cobertura", require: false end gemspec path: "../" diff --git a/gemfiles/rails_master.gemfile b/gemfiles/rails_master.gemfile index 13fca36..80086d2 100644 --- a/gemfiles/rails_master.gemfile +++ b/gemfiles/rails_master.gemfile @@ -3,30 +3,25 @@ source "https://rubygems.org" gem "appraisal" -gem "json", "~> 2.1" gem "rake" gem "rspec", "~> 3.6" gem "rspec-collection_matchers" gem "rspec-its" gem "webmock", "~> 3.0" gem "rake-release", "~> 1.0" -gem "activesupport", git: "https://github.com/rails/rails.git" -gem "activemodel", git: "https://github.com/rails/rails.git" -gem "actionpack", git: "https://github.com/rails/rails.git" -gem "railties", require: "rails", git: "https://github.com/rails/rails.git" +gem "activesupport", github: "rails/rails" +gem "activemodel", github: "rails/rails" +gem "actionpack", github: "rails/rails" +gem "railties", github: "rails/rails", require: "rails" group :development do - gem "redcarpet", platform: :ruby - gem "yard", "~> 0.9.24" - gem "rubocop-config", tag: "v14", git: "https://github.com/jgraichen/rubocop-config.git" + gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14" end group :test do gem "msgpack", "~> 1.1" - gem "pry" - gem "pry-byebug" - gem "simplecov" - gem "simplecov-cobertura" + gem "simplecov", require: false + gem "simplecov-cobertura", require: false end gemspec path: "../" From df6f5e7fe1d2a704fcac15c575c8ca3109f2fce1 Mon Sep 17 00:00:00 2001 From: Jan Graichen Date: Sat, 20 Jun 2026 13:29:31 +0200 Subject: [PATCH 3/3] fix: Test failing when core_ext/json is loaded Instead, always load all core_ext, which are always present in Rails, and fix the test to undef as_json, since that broke the test assuming that to_json is used for serialization. --- lib/acfs.rb | 5 +---- spec/acfs/middleware/json_spec.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/acfs.rb b/lib/acfs.rb index 3a72cf6..cd80f3b 100644 --- a/lib/acfs.rb +++ b/lib/acfs.rb @@ -1,10 +1,7 @@ # frozen_string_literal: true require 'active_support' -require 'active_support/core_ext/hash' -require 'active_support/core_ext/class' -require 'active_support/core_ext/string' -require 'active_support/core_ext/module' +require 'active_support/core_ext' require 'active_support/notifications' require 'opentelemetry' diff --git a/spec/acfs/middleware/json_spec.rb b/spec/acfs/middleware/json_spec.rb index 320093c..a7b597a 100644 --- a/spec/acfs/middleware/json_spec.rb +++ b/spec/acfs/middleware/json_spec.rb @@ -29,12 +29,28 @@ end end + context 'with #as_json objects' do + let(:data) do + Class.new do + def as_json(*) + {a: 1, b: 3} + end + end.new + end + + it 'serializes data with #as_json' do + expect(JSON.parse(request.body)).to eq 'a' => 1, 'b' => 3 + end + end + context 'with #to_json objects' do let(:data) do Class.new do def to_json(*) '{"a": 1, "b": 2}' end + + undef as_json end.new end