π Kettle::Deps::Floor
if ci_badges.map(&:color).detect { it != "green"} βοΈ let me know on Discord or RubyForum, as I may have missed the notification.
if ci_badges.map(&:color).all? { it == "green"} ποΈ send money so I can do more of this. FLOSS maintenance is now my full-time job.
I've summarized my thoughts in this blog post.
kettle-deps-floor discovers the minimum dependency versions already supported by your Ruby gems and raises their declared floors when newer versions are safe to use. It can inspect gemspecs and configured template sources, with upgrade limits, dry-run reports, checks, and controlled commits.
π‘ Info you can shake a stick at
| Tokens to Remember |
|
|---|---|
| Works with JRuby |
|
| Works with Truffle Ruby |
|
| Works with MRI Ruby 4 |
|
| Works with MRI Ruby 3 |
|
| Support & Community |
|
| Source |
|
| Documentation |
|
| Compliance |
|
| Style |
|
| Maintainer ποΈ |
|
... π |
|
Compatibility
Compatible with MRI Ruby 3.2.0+, JRuby, and TruffleRuby.
CI workflows and Appraisals are generated for MRI Ruby 3.2.0+.
The current MRI CI lane runs on Linux and macOS.
This test floor is configured by ruby.test_minimum in .kettle-jem.yml and
may be higher than the gem's runtime compatibility floor when legacy Rubies are
not practical for the current toolchain.
The amazing test matrix is powered by the kettle-dev stack.
| Gem | Source | Role | Total downloads |
|---|---|---|---|
| appraisal2 | GitHub | multi-dependency Appraisal matrix generation | |
| appraisal2-rubocop | GitHub | RuboCop Appraisal generator integration | |
| kettle-dev | GitHub | development, release, and CI workflow tooling | |
| kettle-jem | GitHub | Appraisals & CI workflow templates | |
| kettle-soup-cover | GitHub | SimpleCov coverage policy and reporting | |
| kettle-test | GitHub | standard test runner and coverage harness | |
| rubocop-lts | GitHub | Ruby-version-aware linting | |
| turbo_tests2 | GitHub | parallel test execution |
Federated DVCS
| Federated DVCS Repository | Status | Issues | PRs | Wiki | CI |
|---|---|---|---|---|---|
| π§ͺ kettle-dev/kettle-deps-floor on GitLab | The Truth | π | π | π | π Tiny Matrix |
| π§ kettle-dev/kettle-deps-floor on CodeBerg | An Ethical Mirror (Donate) | π | π | β | βοΈ No Matrix |
| π kettle-dev/kettle-deps-floor on GitHub | Another Mirror | π | π | π | π― Full Matrix |
Enterprise Support
For enterprise support from the maintainer, use Upwork or CodeMentor.
Other support channels:
β¨ Installation
Install the gem and add to the application's Gemfile by executing:
bundle add kettle-deps-floorIf bundler is not being used to manage dependencies, install the gem by executing:
gem install kettle-deps-floorβοΈ Configuration
By default, kettle-deps-floor scans *.gemspec in the selected project root
and queries RubyGems for newer compatible versions. A project may add
.kettle-deps-floor.yml to configure source globs, explicit family-release
versions, and dependency holds:
sources:
- "*.gemspec"
- "Gemfile"
target_versions:
token-resolver: "2.0.14"
holds:
rubocop-minitest: "Wait until the standard gem range permits this release."target_versions is useful for sibling-family lockstep releases. Holds suppress
a named dependency from automatic updates. Use quoted version strings.
π§ Basic Usage
Preview compatible dependency-floor updates without changing files:
bundle exec kettle-deps-floor --upgrade patchCheck a family member against an explicit just-released sibling version:
bundle exec kettle-deps-floor --check --target token-resolver=2.0.14Apply updates, add a keyed Unreleased changelog entry, and commit only the changed source files (the default write behavior):
bundle exec kettle-deps-floor --write --upgrade minorUse --no-commit to write without committing, --no-changelog to omit the
changelog update, --source GLOB to add or override scanned Ruby source paths,
and --only GEM[,GEM...] to limit the update set. The major, minor, and
patch limits constrain registry candidates; existing non-floor requirements
are still checked before a target is accepted. Changes use Prism AST source
locations rather than text substitutions.
Use --events to stream compact NDJSON progress events to stdout; the normal
human summary moves to stderr so the stream remains machine-readable. Events
use kettle-ndjson's versioned run_start, command_step, and summary schema.
π Security
See SECURITY.md.
π€ Contributing
If you need some ideas of where to help, you could work on adding more code coverage, check issues or PRs, or use the gem and think about how it could be better.
We so if you make changes, remember to update it.
See CONTRIBUTING.md for more detailed instructions.
π Release Instructions
See CONTRIBUTING.md.
Code Coverage
πͺ Code of Conduct
Everyone interacting with this project's codebases, issue trackers,
chat rooms and mailing lists agrees to follow the .
π Contributors
Made with contributors-img.
Also see GitLab Contributors: https://gitlab.com/kettle-dev/kettle-deps-floor/-/graphs/main
π Versioning
This library follows for its public API where practical.
For most applications, prefer the Pessimistic Version Constraint with two digits of precision.
For example:
spec.add_dependency("kettle-deps-floor", "~> 0.0")Dropping support for a platform can be a breaking change for affected users. If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
To get a better understanding of how SemVer is intended to work over a project's lifetime, read this article from the creator of SemVer:
See CHANGELOG.md for a list of releases.
π License
The gem is available under the following license: AGPL-3.0-only. See LICENSE.md for details.
If none of the available licenses suit your use case, please contact us to discuss a custom commercial license.
Β© Copyright
See LICENSE.md for the official copyright notice.
- Copyright (c) 2026 Peter H. Boling
π€ A request for help
Maintainers have teeth and need to pay their dentists. After getting laid off in an RIF in March, and encountering difficulty finding a new one, I began spending most of my time building open source tools. I'm hoping to be able to pay for my kids' health insurance this month, so if you value the work I am doing, I need your support. Please consider sponsoring me or the project.
To join the community or get help, use the RubyForum or Discord.
To say "thanks!" βοΈ Join the community or ποΈ send money.
Please give the project a star β β₯.
Many parts of this project are actively managed by a kettle-jem smart template utilizing StructuredMerge.org merge contracts.
Thanks for RTFM. βΊοΈ
| Field | Value |
|---|---|
| Package | kettle-deps-floor |
| Description | π Discover and raise RubyGems dependency floors in gemspecs and configured template sources, with upgrade limits, dry-run reports, checks, and controlled commits. |
| Homepage | https://github.com/kettle-dev/kettle-deps-floor |
| Source | https://github.com/kettle-dev/kettle-deps-floor |
| License | AGPL-3.0-only |
| Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/kettle-dev, https://thanks.dev/u/gh/pboling, https://www.buymeacoffee.com/pboling |
