Active Storage
Fly.io is a great place to deploy Rails applications that make use of Active Storage, and Fly.io knows that Rails users prefer Convention over Configuration and their menus Omakase.
Launching a new Application?
If any of the following are true, fly launch
will take care of all of the configuration:
aws-sdk-s3
inGemfile
orGemfile.lock
- any migration containing
active_storage_attachments
- an uncommented line in
config/storage.yml
containingservice: S3
Don’t want Tigris for any reason? Hey - we don’t judge here. Simply disable the extension in the web UI, and setup active storage for yourself.
Adding Tigris to an existing application?
No problem! It can be as easy as a two step process.
Step 1: Create a storage bucket:
fly storage create
? Choose a name, use the default, or leave blank to generate one:
Your Tigris project (xxx) is ready. See details and next steps with: https://fly.io/docs/tigris/
Setting the following secrets on xxx:
AWS_ACCESS_KEY_ID: tid_xxx
AWS_ENDPOINT_URL_S3: https://fly.storage.tigris.dev
AWS_REGION: auto
AWS_SECRET_ACCESS_KEY: tsec_xxxxx
BUCKET_NAME: xxx
Secrets are staged for the first deployment
Step 2: Let dockerfile-rails
do the configuring for you:
bin/rails generate dockerfile --tigris
Note: you don’t need to accept changes to your Dockerfile
, .dockerignore
,
bin/docker-entrypoint
or other files. The only files that need to be updated are:
config/storage.yml
config/environments/production.rb
Want a demo?
Following is a quick and dirty demo that enables you to upload files containing images, audio, video, and other assorted files for viewing and/or downloading.
First, some scaffolding:
rails new filelist --css tailwind
cd filelist
bin/rails active_storage:install
bin/rails generate scaffold Item name:string contents:attachment
bin/rails db:migrate
Next we need to modify three files to complete the application.
With this in place, you are ready to launch:
fly launch
Watch the app deploy and then upload, view, and download a few files!
Find out more!
Now that you are up and running, there is a lot more to explore on the Tigris Global Object Storage page. Highlights include public buckets, migrating to Tigris with shadow butckets, Pricing, and AWS API compatibility.