Skip to content

About

AST-based RubyGems dependency floor management

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

Β 

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

kettle-dev Logo by GitHub

πŸ’Ž Kettle::Deps::Floor

Version Ruby Users Forum GitHub tag (latest SemVer) License: AGPL-3.0-only Total downloads CodeCov Test Coverage Coveralls Test Coverage QLTY Test Coverage QLTY Maintainability CI Heads CI Runtime Dependencies @ HEAD CI Current CI Truffle Ruby CI JRuby Deps Locked Deps Unlocked CI Test Coverage CI Style

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.

OpenCollective Backers OpenCollective Sponsors Sponsor Me on Github Liberapay Goal Progress Donate on PayPal Buy me a coffee Donate at ko-fi.com

πŸ‘£ How will this project approach the September 2025 hostile takeover of RubyGems? πŸš‘οΈ

I've summarized my thoughts in this blog post.

🌻 Synopsis Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0 ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5

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 Gem name Gem namespace
Works with JRuby JRuby 10.0 Compat JRuby current Compat JRuby HEAD Compat
Works with Truffle Ruby Truffle Ruby 24.2 Compat Truffle Ruby 25.0 Compat Truffle Ruby 33.0 Compat Truffle Ruby current Compat
Works with MRI Ruby 4 Ruby current Compat Ruby HEAD Compat
Works with MRI Ruby 3 Ruby 3.2 Compat Ruby 3.3 Compat Ruby 3.4 Compat
Support & Community Join Me on Daily.dev's RubyFriends Get help from RubyForum Live Chat on Discord Get help from me on Upwork Get help from me on Codementor
Source Source on GitLab.com Source on CodeBerg.org Source on GitHub.com The best SHA: dQw4w9WgXcQ!
Documentation Current release on RubyDoc.info YARD on Galtzo.com Maintainer Blog GitLab Wiki GitHub Wiki
Compliance License: AGPL-3.0-only Apache license compatibility: Category X πŸ“„ilo-declaration-img Security Policy Contributor Covenant 2.1 SemVer 2.0.0
Style Enforced Code Style Linter Keep-A-Changelog 1.0.0 Gitmoji Commits Compatibility appraised by: appraisal2
Maintainer πŸŽ–οΈ Follow Me on LinkedIn Follow Me on Ruby.Social Follow Me on Bluesky Contact Maintainer My technical writing
... πŸ’– Find Me on WellFound: Find Me on CrunchBase My LinkTree More About Me 🧊 πŸ™ πŸ›– πŸ§ͺ

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.

kettle-dev Logo by Aboling0, CC BY-SA 4.0

The amazing test matrix is powered by the kettle-dev stack.

How kettle-dev manages complexity in tests
Gem Source Role Total downloads
appraisal2 GitHub multi-dependency Appraisal matrix generation Total downloads for appraisal2
appraisal2-rubocop GitHub RuboCop Appraisal generator integration Total downloads for appraisal2-rubocop
kettle-dev GitHub development, release, and CI workflow tooling Total downloads for kettle-dev
kettle-jem GitHub Appraisals & CI workflow templates Total downloads for kettle-jem
kettle-soup-cover GitHub SimpleCov coverage policy and reporting Total downloads for kettle-soup-cover
kettle-test GitHub standard test runner and coverage harness Total downloads for kettle-test
rubocop-lts GitHub Ruby-version-aware linting Total downloads for rubocop-lts
turbo_tests2 GitHub parallel test execution Total downloads for turbo_tests2

Federated DVCS

Find this repo on federated forges (Coming soon!)
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:

  • Ruby Users Forum
  • Live Chat on Discord

✨ Installation

Install the gem and add to the application's Gemfile by executing:

bundle add kettle-deps-floor

If 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 patch

Check a family member against an explicit just-released sibling version:

bundle exec kettle-deps-floor --check --target token-resolver=2.0.14

Apply 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 minor

Use --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 Keep A Changelog so if you make changes, remember to update it.

See CONTRIBUTING.md for more detailed instructions.

πŸš€ Release Instructions

See CONTRIBUTING.md.

Code Coverage

Coverage service badges

Coverage Graph

Coveralls Test Coverage

QLTY Test Coverage

πŸͺ‡ Code of Conduct

Everyone interacting with this project's codebases, issue trackers, chat rooms and mailing lists agrees to follow the Contributor Covenant 2.1.

🌈 Contributors

Contributors

Made with contributors-img.

Also see GitLab Contributors: https://gitlab.com/kettle-dev/kettle-deps-floor/-/graphs/main

πŸ“Œ Versioning

This library follows Semantic Versioning 2.0.0 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")
πŸ“Œ Is "Platform Support" part of the public API? More details inside.

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 holders
  • 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.

Ruby Users Forum Live Chat on Discord

To say "thanks!" ☝️ Join the community or πŸ‘‡οΈ send money.

Sponsor kettle-dev/kettle-deps-floor on Open Source Collective πŸ’Œ Sponsor me on GitHub Sponsors πŸ’Œ Sponsor me on Liberapay πŸ’Œ Donate on PayPal

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

About

AST-based RubyGems dependency floor management

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages