From 9c3f856ac5e3c7f40b190724205346fb6c292d8b Mon Sep 17 00:00:00 2001 From: Ryan Duguid <152749594+ryanduguid@users.noreply.github.com> Date: Thu, 13 Aug 2026 03:33:06 +1000 Subject: [PATCH 1/2] build: set tested Ruby runtime floor --- xero-ruby.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xero-ruby.gemspec b/xero-ruby.gemspec index 2662de90..87edc4f5 100644 --- a/xero-ruby.gemspec +++ b/xero-ruby.gemspec @@ -24,7 +24,7 @@ Gem::Specification.new do |s| s.summary = "Xero Accounting API Ruby Gem" s.description = "Xero API OAuth2.0 SDK - Ruby Gem" s.license = "Unlicense" - s.required_ruby_version = ">= 2.3" + s.required_ruby_version = ">= 3.2" s.add_runtime_dependency 'faraday', '>= 2.0', '< 3.0' s.add_runtime_dependency 'json', '~> 2.1', '>= 2.1.0' From 86874ed9b2973885ab0e47dc041ed707d1ede711 Mon Sep 17 00:00:00 2001 From: Ryan Duguid <152749594+ryanduguid@users.noreply.github.com> Date: Wed, 19 Aug 2026 15:18:06 +1000 Subject: [PATCH 2/2] docs(release): record the Ruby 3.2 floor as breaking and align rubocop target Raising required_ruby_version from ">= 2.3" to ">= 3.2" drops every consumer on Ruby 2.3 through 3.1, but version.rb stays on the non-major 18.1.0 line and the change carried no changelog entry. RubyGems resolves an unsupported consumer to the newest release they satisfy, so an app on 3.1 running `bundle update xero-ruby` is silently held at 18.1.0 with no error to signal it. Added CHANGELOG.md (the repo had none) recording the breaking change, what happens to consumers on the dropped versions, and a maintainer note that the next release must be cut as 19.0.0. Did not bump lib/xero-ruby/version.rb. It is OpenAPI-Generator-owned and its version is stamped by the "Releasing X.Y.Z (OAS: N.N.N)" commit from the codegen pipeline rather than by feature PRs, and .github/workflows/publish.yml publishes whatever that file carries, so hand-bumping here would collide with the release pipeline. The major bump is recorded as a release requirement instead. Also raised TargetRubyVersion in .rubocop.yml from 2.4 to 3.2. It contradicted the new gemspec floor, so an endless method definition or `...` argument forwarding, both legal on 3.2, would fail the CI "Lint Code" step with a Lint/Syntax offence on valid code. --- .rubocop.yml | 2 +- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/.rubocop.yml b/.rubocop.yml index d2ab95d2..c43722ac 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,7 +1,7 @@ # This file is based on https://github.com/rails/rails/blob/master/.rubocop.yml (MIT license) # Automatically generated by OpenAPI Generator (https://openapi-generator.tech) AllCops: - TargetRubyVersion: 2.4 + TargetRubyVersion: 3.2 # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop # to ignore them, so only the ones explicitly set in this file are enabled. DisabledByDefault: true diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..f2e4b380 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,34 @@ +# Changelog + +Notable changes to xero-ruby are recorded here. + +## Unreleased + +### Changed (breaking) + +- Raised `required_ruby_version` in `xero-ruby.gemspec` from `>= 2.3` to `>= 3.2`. + Ruby 2.3 through 3.1 are no longer supported. + + Applications still on those versions are left on 18.1.0. RubyGems resolves a + consumer to the newest release whose `required_ruby_version` they satisfy, so + `bundle update xero-ruby` quietly holds them at 18.1.0 rather than failing, and + they stop receiving fixes with no error to signal it. Upgrade to Ruby 3.2 or + later to keep receiving updates. + +- Raised `TargetRubyVersion` in `.rubocop.yml` from 2.4 to 3.2 to match the new + floor. It previously contradicted the gemspec, so syntax that is valid on the + supported floor (endless method definitions, `...` argument forwarding) would + raise a `Lint/Syntax` offence in the CI lint step on correct code. + +### Notes for maintainers + +Dropping supported Ruby versions is a breaking change, so the next release must +be cut as **19.0.0**, not 18.2.0. + +`lib/xero-ruby/version.rb` is deliberately left at 18.1.0 in this change. That +file is OpenAPI-Generator-owned and its version is stamped by the +`Releasing X.Y.Z (OAS: N.N.N)` commit produced by the codegen pipeline, not by +feature pull requests, and `.github/workflows/publish.yml` publishes whatever +version that file carries at release time. Bumping it here would collide with +that pipeline, so the major bump is recorded as a release requirement instead of +being applied in this change.