On this page
Overview
CarrierWave is a file-upload library for Ruby applications. It separates temporary cache from permanent storage, stores files on local or cloud backends, and mounts uploader classes onto ActiveRecord models. Image processing, multiple files, remote downloads, and generated versions can be layered on as needed. The latest stable release is 3.1.4, while master is 4.0.0.beta.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Define cache, storage, paths, and filenames in uploader classes
Subclasses of CarrierWave::Uploader::Base define storage, store_dir, filenames, and related behavior. ActiveRecord integrations mount uploaders on model columns so file persistence follows record lifecycle.
Sources: [2]
Add image versions, processing, multiple uploads, and metadata when needed
CarrierWave can integrate MiniMagick or Vips processing, thumbnail versions, multiple-file fields, stored metadata, and remote URL downloads. The 4.0 beta line adds recorded storage metadata and direct-upload work.
Best fit
Fits Rails-centric applications that want model lifecycle and file attachments directly connected
It suits Rails and Rack applications that want form uploads, model persistence, derivative generation, and filesystem or cloud storage managed through a single uploader definition, including long-lived CarrierWave codebases.
Sources: [2]
Before adoption
Separate stable 3.1.4 from the 4.0 beta line and define upload and image-processing security explicitly
The latest stable release is 3.1.4, while master declares 4.0.0.beta with breaking changes and Ruby 2.7+/Rails 7.0+ requirements. Use content-type allowlists rather than relying only on extensions, review ImageMagick/ImageTragick defenses, and treat remote downloads and storage paths as untrusted-input boundaries.
Official sources
- [1]carrierwaveuploader/carrierwave — GitHub repository(2026-10-06)
- [2]CarrierWave — README(2026-10-06)
- [3]CarrierWave — carrierwave.gemspec(2026-10-06)
- [4]CarrierWave — CHANGELOG(2026-10-06)
- [5]CarrierWave — v3.1.4 release(2026-10-06)
Supplemental curator note
CarrierWave is a long-established way to connect Rails models and file attachments. Keep stable 3.1.4 separate from the 4.0 beta line and treat content-type validation, ImageMagick configuration, remote downloads, and storage paths as security boundaries.
Try it in 3 steps
- 1
Get the source
git clone --depth 1 https://github.com/carrierwaveuploader/carrierwave.git - 2
Enter the repository
cd carrierwave - 3
Check the official steps
Continue with the commands in the README Installation, Quick Start, or Getting Started section.
find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
Growth
Growth trends · Last 30 days
8,768 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 21
- Open PRs
- 0
Development activity is still being collected.
Built with
Categories and tags
GitHub data
GitHub dataView detailed GitHub data
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Hanami6,422 Stars
1 shared tag(s) · 2 shared category(s) · Same language
Compose maintainable Ruby applications from focused router, action, view, database, and asset components
Ruby - Ransack5,858 Stars
1 shared tag(s) · 2 shared category(s) · Same language
add searching, filtering, and sorting to ActiveRecord-backed Rails apps without a separate search service
Ruby - AASM5,228 Stars
1 shared tag(s) · 2 shared category(s) · Same language
model states, events, and transitions as finite state machines in plain Ruby and ORM-backed classes
Ruby - factory_bot_rails3,139 Stars
1 shared tag(s) · 2 shared category(s) · Same language
Integrate Factory Bot with Rails through automatic factory loading, generators, and file fixtures
Ruby - Jekyll51,708 Stars
1 shared tag(s) · 1 shared category(s) · Same language
generate blog-aware static sites from Markdown and Liquid
Ruby - Homebrew49,894 Stars
1 shared tag(s) · 1 shared category(s) · Same language
manage macOS and Linux software through the
Rubybrewpackage workflow
Report incorrect information
Tell us if any listing information is incorrect or outdated.