This is ActiveStorage engine that allows storing files inside the database.
While storing files on the external services such as S3, GCS, Azure is usually better approach, but better approach also
depends on the context.
There is a group of applications that do store the files, but not a lot of files or they are installed on-premises without access to these public services.
This project is aimed more for those type of apps, if you store TBs of files then you should probabbly look into other solutions.
| Rails Version | ActiveStorageDatabase Version |
|---|---|
| 7 | 2.x |
| 6 | 1.x |
Every file is stored inside the activestorage_database_files table as a binary/bytea.
Since PostgreSQL can't store values that span multiple pages(8kb), binaries will probabbly be stored inside the TOAST table,
which allows for quick table scan and leaves the main table(activestorage_database_files) slim.
NOTE: Max size of TOST tuple in PG is 1GB
Engine will use your ActiveRecord database connection.
Add this line to your application's Gemfile:
gem 'activestorage_database'Install and run the migrations:
bin/rails activestorage_database:install:migrations
bin/rails db:migrate
Configure database service:
# config/storage.yml
database:
service: Databaseconfig.active_storage.service = :database# config/routes.rb
Rails.application.routes.draw do
mount ActivestorageDatabase::Engine => '/activestorage_database'
...
endAfter the setup you can work with ActiveStorge API as if it was any other ActiveStorage service.
The gem is available as open source under the terms of the MIT License.
Active Storage Database is maintained by WizardHealth.
