# shrinerb/shrine

File Attachment toolkit for Ruby applications

Repository: https://github.com/shrinerb/shrine
Canonical: https://ross.abutalabs.com/products/shrine
Homepage: https://shrinerb.com
Language: Ruby
License: MIT
License Family: permissive
Topics: file-upload, ruby, rack, storage, attachment, filesystem, s3, background-jobs, direct-upload, orm, metadata
Last push: 2026-08-26T13:18:06+00:00

## Health v2 (maintenance only)
Score: 77/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 35, longevity 100
- inputs: {"age_days": 3965, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 3285, forks 277 (observed 2026-08-28T04:07:53.746027+00:00)

## What it is
Shrine is a modular file attachment toolkit for Ruby applications that handles uploading, storing, processing, and serving files across many storage backends like filesystem, S3, and Google Cloud. It integrates with popular ORMs via plugins and supports direct, presigned, and resumable uploads with background processing.

## Use cases
- attach images to models in a Ruby app
- upload files to S3 from a Rails application
- generate image thumbnails on upload
- handle large resumable file uploads
- accept direct-to-cloud uploads from the browser
- store attachments with ActiveRecord or Sequel
- process uploads in background jobs

## When to choose
- you need framework-agnostic file attachments in Ruby (Sinatra, Roda, Hanami, Rails)
- you want pluggable storage backends and a modular plugin system
- you need direct or resumable uploads with Uppy or tus
- you want eager or on-the-fly thumbnail generation

## When to avoid
- you're not using Ruby
- you need a simple one-file upload in a non-web script
- you want a batteries-included Rails-only solution like Active Storage

## Facets
- artifact type: library
- maturity: stable
- function: file-upload, image-processing, orm, middleware, plugin-system
- domain: web-development, backend, files, developer-tools
- platform: ruby, cross-platform
- tags: file-attachments, s3, direct-upload, resumable-uploads, activerecord, sequel, rack, background-jobs, thumbnails, web-server

## Member repositories
- shrinerb/shrine (main) score 77

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:07:53.746027+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T07:22:56.051221+00:00, confidence not recorded.
  - readme: https://github.com/shrinerb/shrine (fetched 2026-08-28T04:07:53.746027+00:00, sha faf4368a095f)
  - homepage: https://shrinerb.com (fetched 2026-08-29T09:35:58.048902+00:00, sha d0399c091f85)
  - site_page: https://shrinerb.com/docs/getting-started (fetched 2026-08-29T09:35:58.051773+00:00, sha a53d0ce741fc)
  - site_page: https://shrinerb.com/docs/plugins/activerecord (fetched 2026-08-29T09:35:58.054898+00:00, sha d93c8cd956f7)
  - site_page: https://shrinerb.com/docs/external/extensions (fetched 2026-08-29T09:35:58.057297+00:00, sha 32ab17e31c30)
  - site_page: https://shrinerb.com/docs/release_notes/3.9.0 (fetched 2026-08-29T09:35:58.060318+00:00, sha ba21ed0c3175)
  - site_page: https://shrinerb.com/docs/advantages (fetched 2026-08-29T09:35:58.062605+00:00, sha 5744639446d7)
- Data as of 2026-08-30T08:39:29.467469+00:00.
