Add minimal implementation for RubyGems compact index API. (#3811)
Current package registry for RubyGems does not work with Bundler, because it implements neither the [compact index](https://guides.rubygems.org/rubygems-org-compact-index-api/) or the [dependency API](https://guides.rubygems.org/rubygems-org-api/). As a result, bundler complains about finding non-existing dependencies when installing anything with dependency: `revealed dependencies not in the API or the lockfile`. This patch provides a minimal implementation for the compact index API to solve this issue. Specifically, we implemented a version that does not cache the results / do incremental updates; which is consistent with the current implementation. Testing: * Modified existing integration tests. * Manually Verified bundler is able to parse the served versions / info file. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3811 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Haoyuan (Bill) Xing <me@hoppinglife.com> Co-committed-by: Haoyuan (Bill) Xing <me@hoppinglife.com>
This commit is contained in:
parent
3351ce2bc5
commit
6cb8c81de1
4 changed files with 323 additions and 10 deletions
|
@ -586,6 +586,8 @@ func CommonRoutes() *web.Route {
|
|||
r.Get("/specs.4.8.gz", rubygems.EnumeratePackages)
|
||||
r.Get("/latest_specs.4.8.gz", rubygems.EnumeratePackagesLatest)
|
||||
r.Get("/prerelease_specs.4.8.gz", rubygems.EnumeratePackagesPreRelease)
|
||||
r.Get("/info/{package}", rubygems.ServePackageInfo)
|
||||
r.Get("/versions", rubygems.ServeVersionsFile)
|
||||
r.Get("/quick/Marshal.4.8/{filename}", rubygems.ServePackageSpecification)
|
||||
r.Get("/gems/{filename}", rubygems.DownloadPackageFile)
|
||||
r.Group("/api/v1/gems", func() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue