A simple and flexible Ruby gem for handling file uploads in Rails, Sinatra, and other Rack-based web applications.
CarrierWave is a Ruby gem designed to handle file uploads in web applications built with frameworks like Rails and Sinatra. It provides a flexible and modular approach to managing file storage, processing, and retrieval, supporting both local filesystems and cloud storage services. The gem solves the problem of integrating file upload functionality into Ruby applications with minimal boilerplate code.
Ruby developers building web applications with Rails, Sinatra, or other Rack-based frameworks who need reliable file upload capabilities. It's particularly useful for projects requiring image processing, cloud storage integration, or complex upload workflows.
Developers choose CarrierWave for its simplicity, extensive customization options, and seamless integration with Ruby ecosystems. Its support for multiple storage backends, image processing libraries, and ORMs makes it a versatile choice over more rigid alternatives.
Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports local filesystem and cloud services like Amazon S3, Google Cloud Storage, and Rackspace, with detailed configuration examples in the README for seamless integration.
Integrates with MiniMagick, RMagick, or Vips for operations like resizing and cropping, including versioning and conditional processing, as documented in the manipulating images section.
Mounts uploaders on model columns with ActiveRecord, DataMapper, Mongoid, and Sequel via separate gems, making file attachment straightforward in Ruby applications.
Provides allowlists and denylists for file extensions and content types to mitigate risks like CVE-2016-3714, with explicit warnings and configuration advice in the README.
Major version upgrades (e.g., from 2.x to 3.x) require manual intervention like setting force_extension or recreating versions, which can break existing deployments if not handled carefully.
Default behavior involves copying files twice during upload (cache and store), slowing down large file handling, though this can be optimized by overriding move_to_cache and move_to_store methods.
Relies on external libraries like ImageMagick for image processing and fog for cloud storage, adding installation and maintenance overhead beyond the gem itself.