Asdf is a tool for managing versions. It lets you manage versions for a bunch of different things, with just one version manager. (Instead of installing nvm and rbenv and pyenv and and and)

# It has comments

Asdf supports comments - lines starting with # are comments. At first this wasn’t working for me - which made me realized the version that had been installed by the setup script I ran on my new work computer was old. I ran asdf update and then I could comment.

# It supports project-level config

Docs on configuration suggest that an .asdfrc file must exist at $HOME/.asdfrc if you want to have configuration. But if you’re working on a project with others and want to change a setting (perhaps to set legacy_version_file=yes, so you can keep the source of truth for the ruby version in .ruby-version), you can also create a file called .asdfrc in the root of your project. And when you run asdf install there, those config options will be respected.

This isn’t working perfectly - I set the postgres version in myproject/.asdrfc and asdf gave me the right version, but when I ran bundle install in the same directory (using a legacy version of ruby & rails many other things probably; this could be fixed in current version), the pg gem compilation wasn’t finding the right version of postgres, and I had to place the version in the $HOME/.asdfrc directory anyways. There's probably another/better workaround, but it works for me for now. Even though it's currently a bit hacky, I like that the correct version for a given project can be listed right there in the project repository for others to read from.