Hatchbox Exports Env Vars With asdf
January 21, 2025 ยท View on GitHub
When you add env vars through the Hatchbox UI, they get
exported to the environment of the asdf-shimmed processes. This is handled by
the asdf-vars plugin. That plugin
looks for .asdf-vars in the current chain of directories.
I can see there are many .asdf-vars files:
$ find . -name ".asdf-vars" -type f
./.asdf-vars
./my-app/.asdf-vars
./my-app/releases/20250120195106/.asdf-vars
./my-app/releases/20250121041054/.asdf-vars
And it is the one in my app's directory that contains the env vars that I set in the UI.
$ cat my-app/.asdf-vars
BUNDLE_WITHOUT=development:test
DATABASE_URL=postgresql://user_123:123456789012345@10.0.1.1/my_app_db
PORT=9000
RACK_ENV=production
RAILS_ENV=production
RAILS_LOG_TO_STDOUT=true
RAILS_MASTER_KEY=abc123
SECRET_KEY_BASE=abc123efg456
When I run a shimmed process like ruby, those env vars are loaded into the
process's environment.
$ cd my-app/current
$ which ruby
/home/deploy/.asdf/shims/ruby
$ ruby -e "puts ENV['DATABASE_URL']"
postgresql://user_123:123456789012345@10.0.1.1/my_app_db