RubyGems.org
rubygems.org · Storage · 1 record · JSON
RubyGems.org Storage
caveatinstitutionno cardR
| Free tier | Per-gem size is exposed per version via the API; large gems (e.g. binaries) do get 413'd in practice. unit mixed; metered on unstated |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | Version strings and gem names are permanent. |
| Egress | Free and unmetered, Cloudflare-fronted. Probe: GET https://rubygems.org/downloads/rails-7.0.0.gem -> 200, Server: cloudflare, Cache-Control: max-age=31536000, Access-Control-Allow-Origin: *, Accept-Ranges: bytes. |
| Identity | institution derived from the record's prose, not from an identity field, and no signup was executed: a byte limit. Per-gem size is exposed per version via the API; large gems (e.g. binaries) do get 413'd in practice. The unknown size cap is the risk — the one public 413 report ( |
| Binding | none no constraint in the record binds at this scale; the record carries no limit of a kind the vocabulary names |
| Interface | rest rest |
| Tooling | POST /api/v1/gems with the .gem body (gem push); GET /downloads/<name>-<ver>.gem or /gems/<name>-<ver>.gem. First-class clients (gem push, bundler). Rate-limit config is public in the repo (rack_attack.rb: PUSH_LIMIT = 400 per 60 minutes). |
| Composes with | 400 pushes/hour is the most generous publish rate in the entire niche — 9,600 gems/day, i.e. ~2-9 TB/day if each gem were at a hypothetical 250 MB. If the undocumented size limit is anywhere near npm's, RubyGems becomes the highest-throughput package-registry store found. Confirm the size cap before relying on it. |
| Reliability | The unknown size cap is the risk — the one public 413 report (qtbindings) shows a hard limit exists and is enforced at the proxy, and it is not documented anywhere, so you discover it by probing. Rate limits are the best in class and clearly documented. |
| Notes | Per-gem size is exposed per version via the API; large gems (e.g. binaries) do get 413'd in practice. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (5)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | guides.rubygems.org/rubygems-org-rate-limits/ | 'POST /api/v1/gems has following two rate limits: 400 requests/1 hour; 300 requests/5 minutes and 600 requests/25 hours on failed requests' |
| 2026-10-21 | rubygems.org/policies/acceptable-use | full policy page contains no storage quota or per-gem size limit |
| 2026-10-21 | github.com/rubygems/rubygems.org/blob/master/config/initiali | PUSH_LIMIT = 400, PUSH_LIMIT_PERIOD = 60.minutes (live source) |
| 2026-10-21 | rubygems.org/downloads/rails-7.0.0.gem | probe: GET -> 200, Content-Length: 6656, Server: cloudflare, Cache-Control: max-age=31536000 |
| 2026-10-21 | www.mail-archive.com/rubygems-developers@rubyforge.org/msg05 | 'Can't push new qtbindings release (413 error)' (confirms an undocumented size ceiling exists) |
Unknown or withheld values (4)
$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted