Skip to content

Prepare Retriable 4.0.0 by removing timeout#134

Merged
kamui merged 2 commits into
4.xfrom
4.0.0-remove-timeout
May 27, 2026
Merged

Prepare Retriable 4.0.0 by removing timeout#134
kamui merged 2 commits into
4.xfrom
4.0.0-remove-timeout

Conversation

@kamui
Copy link
Copy Markdown
Owner

@kamui kamui commented May 27, 2026

Summary

  • Remove the built-in timeout: option and its Timeout.timeout wrapper.
  • Raise the gem to 4.0.0 and require Ruby 3.0+.
  • Document migration guidance and issue Timeout::timeout is inherently unsafe #96 rationale while preserving the 3.8.0 timeout deprecation release notes as the upgrade bridge.
  • Disable Hound Ruby checks because Hound's RuboCop runtime cannot parse the Ruby 3.0 RuboCop config.

Test Plan

  • bundle exec rspec
  • bundle exec rubocop
  • gem build retriable.gemspec
  • Confirm no timeout references remain under lib/
  • Hound check passes on PR
  • GitHub Actions matrix after rebase

hound[bot]

This comment was marked as resolved.

@kamui kamui force-pushed the 4.0.0-remove-timeout branch from 6fcca2d to 356bba8 Compare May 27, 2026 04:16
@kamui kamui marked this pull request as ready for review May 27, 2026 04:23
@kamui kamui force-pushed the 4.0.0-remove-timeout branch from 356bba8 to de75037 Compare May 27, 2026 04:26
kamui added 2 commits May 27, 2026 00:35
BREAKING CHANGES:

* Remove the built-in `timeout:` option from `Retriable.retriable`
  and `Retriable.with_override`. Passing `timeout:` to those APIs now
  raises `ArgumentError`. The `timeout` config attribute has also been
  removed, so `Retriable.configure { |c| c.timeout = 5 }` now raises
  `NoMethodError`. The option was deprecated in Retriable 3.8.0 and
  wrapped Ruby's unsafe `Timeout.timeout`. See issue #96 and the README
  migration guide for replacement patterns.

* Drop Ruby < 3.0. The gem now requires Ruby >= 3.0 and the CI matrix
  has been trimmed accordingly. Ruby 2.3.0-2.7.x users should stay on
  the 3.8.x branch.
* Set `.rubocop.yml` `TargetRubyVersion` to 3.0 and disable a few
  gemspec-policy cops that are out of scope for this PR.
* Replace the Ruby 2-compatible `pattern.all? { |p| p.is_a?(Regexp) }`
  with Ruby 3's `pattern.all?(Regexp)` in `Retriable::Validation`,
  removing the now-unnecessary RuboCop suppression.
* Disable Hound's Ruby checker. Hound's bundled RuboCop cannot parse
  the Ruby 3.0 config (unrecognized cops, unsupported
  `TargetRubyVersion`), so it fails the PR with a config parse error
  rather than producing useful feedback.
@kamui kamui force-pushed the 4.0.0-remove-timeout branch from de75037 to a79f3e7 Compare May 27, 2026 04:36
@kamui kamui changed the base branch from main to 4.x May 27, 2026 04:38
@kamui kamui merged commit 5a14063 into 4.x May 27, 2026
8 checks passed
@kamui kamui deleted the 4.0.0-remove-timeout branch May 27, 2026 04:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant