fshy

fshy / Storage

RubyGems.org

rubygems.org · Storage · 1 record · JSON

RubyGems.org Storage

caveatinstitutionno cardR

rubygems.org · registry · storage/rubygems-org · JSON · compare

Free tierPer-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
Pricenone stated
Per-object capnot stated
RetentionVersion strings and gem names are permanent.
EgressFree 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.
Identityinstitution 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 (
Bindingnone no constraint in the record binds at this scale; the record carries no limit of a kind the vocabulary names
Interfacerest rest
ToolingPOST /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 with400 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.
ReliabilityThe 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.
NotesPer-gem size is exposed per version via the API; large gems (e.g. binaries) do get 413'd in practice.
Evidence rungreported One page read moves it to documented.
Checked2026-10-21 (inherited); stale on 2026-11-04
Evidence (5)
datesourcewhat it proved
2026-10-21guides.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-21rubygems.org/policies/acceptable-usefull policy page contains no storage quota or per-gem size limit
2026-10-21github.com/rubygems/rubygems.org/blob/master/config/initialiPUSH_LIMIT = 400, PUSH_LIMIT_PERIOD = 60.minutes (live source)
2026-10-21rubygems.org/downloads/rails-7.0.0.gemprobe: GET -> 200, Content-Length: 6656, Server: cloudflare, Cache-Control: max-age=31536000
2026-10-21www.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.notes process
  • $.per_object_cap.notes not-extracted
  • $.per_object_cap.stated not-extracted
  • $.retention.notes not-extracted