Environment Configuration
Rails applications are usually configured via the encrypted credentials.yml
file or via environmental variables.
Environmental variables
Environment variables are a great way to configure a Rails application that needs to run in multiple environments.
Secret variables
Environment variables that have sensitive data in them, like a DATABASE_URL
that contains a password, can be kept in a secret that can’t be viewed except when the container is running.
To set a secret in Fly, run:
fly secrets set SUPER_SECRET_KEY=password1234
Non-sensitive variables
Variables that don’t have sensitive data can be set in the fly.toml
file under the [env]
directive. An example file might look like:
[env]
RAILS_LOG_TO_STDOUT = x
View the variables
To view the environment variables of your Fly Rails app, run:
fly ssh console -C "printenv"
There you’ll see all of the environment variables in your application that have been set by fly secrets
, the [env]
directive in the fly.toml
file, and the environment
directive from your Dockerfile.
Encrypted credentials file
Another approach to managing credentials in Rails is to use an encrypted credentials file, such as config/credentials.yml.enc
or config/credentials/production.yml.enc
, which you can learn more about by running the following from the root of your Rails application:
bin/rails credentials:help
When deploying to production, the RAILS_MASTER_KEY
that will decrypt the credentials file can be set via fly secrets set
. For example, if your master key is stored in config/master.key
, you can run:
fly secrets set RAILS_MASTER_KEY=$(cat config/master.key)
For Windows/PowerShell:
$Env:RAILS_MASTER_KEY = Get-Content 'config\master.key'