feat: add RubyGems registry support#43
Conversation
Add gem:, ruby:, and rubygems: prefixes to fetch Ruby gem source code via rubygems.org API. Follows the existing registry pattern used by npm, PyPI, and crates.io modules. Usage: opensrc path gem:rails opensrc path ruby:sidekiq opensrc path gem:nokogiri@1.16.0 The RubyGems API returns source_code_uri which maps directly to a git clone URL. Falls back to homepage_uri if source_code_uri is absent. Also adds --rubygems flag to the clean command and RubyGems to list output.
|
@mvanhorn is attempting to deploy a commit to the Vercel Labs Team on Vercel. A member of the Team first needs to authorize it. |
|
Hey @mvanhorn, this has been sitting since April. I rebased onto current main (#56 changed the error pattern in rubygems.rs), added the Registry::RubyGems arm in remove.rs that the bot flagged, and folded in two small fixes that came up during review. Submitted as #60 with you as Author and me as Co-author. |
|
Thanks for picking this up @kylesnowschwartz -- really appreciate you rebasing and folding in the registry::RubyGems arm + the bot's fixes. Closing this in favor of #60. Listed you as co-author there; if you'd rather flip the attribution let me know and I'll edit. |
|
All good - no attribution required, just hoping the Vercel team picks it up @mvanhorn By the way - and this is perhaps the most random 'nice to meet you' I've ever had - but I think your mom's husband is one of my dad's dearest friends. Say hi to J & B, I guess 😂 |
Summary
Adds
gem:,ruby:, andrubygems:prefixes to fetch Ruby gem source code via rubygems.org API. Follows the existing registry pattern used by npm, PyPI, and crates.io.Usage
Also adds
--rubygemsflag toopensrc cleanand shows RubyGems inopensrc list.Demo
How it works
The rubygems.org API (
/api/v1/gems/{name}.json) returnssource_code_uriwhich maps directly to a git clone URL. Falls back tohomepage_uriifsource_code_uriis absent, checking if it points to a known git host. Version-specific lookups use the v2 API (/api/v2/rubygems/{name}/versions/{version}.json).normalize_repo_url(already in mod.rs) strips/tree/vX.Y.Zsuffixes that rubygems.org sometimes appends to source_code_uri.Changes
rubygems.rs- New registry module:parse_rubygems_specandresolve_rubygemfollowing the existing patternmod.rs- AddRubyGemsvariant toRegistryenum,gem:,ruby:,rubygems:prefixes, extendparse_package_specandresolve_packagemain.rs- Add--rubygemsflag to clean commandlist.rs- Add RubyGems to the registries display and empty-state help textTesting
3 new unit tests covering spec parsing (simple, versioned, hyphenated names). All 35 tests pass with
--test-threads=1.This contribution was developed with AI assistance (Claude Code).