Repository navigation
v3.1.8
3.1.8 - 2026-10-07
- TAG: v3.1.8
- COVERAGE: 91.65% -- 6276/6848 lines in 49 files
- BRANCH COVERAGE: 75.90% -- 2390/3149 branches in 49 files
- 51.77% documented
Added
-
Kettle::Dev::RubyGemsVersions.fetchaccepts asource:keyword so callers can query a RubyGems-compatible private registry such as gem.coop instead of only rubygems.org. The version cache is now namespaced by source host, so a private registry lagging rubygems.org cannot serve stale answers for the other. The default source keeps the historical bare gem-name cache key, so existing caches remain valid. -
Kettle::Dev::RubyGemsVersions.published_version_numbers(gem_name, source:)returns the version numbers a registry serves for a gem, or nil when the registry could not be consulted. Callers must treat nil as "unknown" rather than "unpublished" so an offline run is not blocked; an empty list, by contrast, means the registry was reached and serves no versions. -
[kc] lockfile-registry-specs:
Kettle::Dev::LockfileReset.registry_gem_specs_from_sourcereturns GEM-section specs as{remote:, name:, version:}so a caller can attribute each pinned version to the registry it was resolved from, which is what makes it possible to detect a locally built and installed gem leaking into a lockfile: bundler resolves against the local gem dir, so an ordinarybundle installcan pin a version no registry serves, and the resulting entry is a normal GEM-section line carrying a valid checksum taken from the installed spec, so nothing in the lockfile text distinguishes it and "is this version published?" can only be answered against the remote that section recorded.gem_specs_from_sourceis now a thin wrapper over it and keeps returning[[name, version]]unchanged. -
Kettle::Dev::RubyGemsVersions.published_version_numbersaccepts aversion:keyword and forwards it tofetchas a cache-bust hint, so the on-disk release marker thatkettle-releasewrites after publishing busts the cache for exactly that gem and version instead of for every gem released within the marker TTL. Without it a caller cannot distinguish "published moments ago in this very run" from "released sometime in the last month". Also addsRubyGemsVersions.recently_released?(gem_name, version), which reports whether the marker records that exact gem and version as published within the TTL, treating a missing or corrupt marker as false rather than raising.
Many paths lead to being a sponsor or a backer of this project. Are you on such a path?