Setting up Rails with mise (the modern way)
Back in January I wrote up setting up Rails 8 on macOS using rbenv, my faithful companion of many years. Then I rebuilt my dotfiles and switched to mise, and I haven’t touched rbenv since. So consider this the setup guide as I’d actually write it today: same destination, fewer moving parts.
The pitch in one line: rbenv manages Ruby, nvm manages Node, and mise manages everything, from one config file, with one syntax.
Prerequisites
Apple’s command line tools, and Homebrew for the system libraries Ruby builds against:
xcode-select --install
brew install libyaml
Install mise
curl https://mise.run | sh
Then activate it by adding this to the bottom of ~/.zshrc, and open a new terminal:
eval "$(~/.local/bin/mise activate zsh)"
Ruby
mise use --global [email protected]
which ruby # a mise shim path, NOT /usr/bin/ruby
ruby -v
That one command installs Ruby and writes it into ~/.config/mise/config.toml as your global default. No rbenv rehash, no separate ruby-build to keep updated, and the config file can live in your dotfiles repo so every machine agrees.
If you’re coming from asdf, it’s the same idea with a plugin step: asdf plugin add ruby, asdf install ruby 4.0.6, asdf set --home ruby 4.0.6. mise even reads .tool-versions files, so existing asdf projects work untouched.
PostgreSQL
Postgres is the one thing I don’t put through mise, for the reasons in the upgrade post: it’s a service, not a per-project language. Homebrew owns it:
brew install postgresql@17
brew services start postgresql@17
Rails
gem install rails
rails -v
New executables just work through mise’s shims, immediately. And since Rails 8 needs no Node, Webpack or Yarn out of the box, this is genuinely the whole toolchain.
A new app
rails new myapp -d postgresql
cd myapp
rails db:create
bin/dev
localhost:3000, Rails welcome page, done.
The per-project trick
Here’s where mise pays rent that rbenv never did. Inside any project:
mise use [email protected]
That writes a .mise.toml into the directory, and cd-ing in switches Ruby automatically. Old projects with a .ruby-version file keep working untouched, mise reads those too. When Ruby 4.1 lands at Christmas, upgrading is: edit the version in your config, mise install, commit. Done on every machine by the next git pull.
Which guide should you follow?
Honestly, either. The rbenv version still works perfectly and rbenv isn’t going anywhere. But if you’re setting up fresh in 2026, or you’re currently juggling rbenv and nvm and whatever manages your other languages, this is the simpler place to land: one tool, one config file, and a setup you can rebuild from your dotfiles with a single command. Ask me how I know.