The readme says:
It is recommended to also run gem install puma, which Sinatra will pick up if available.
This suggests that if puma is installed, it will always be used as the server. But that's not true. To demonstrate:
gem uninstall puma sinatra thin # reset things
gem install puma sinatra thin
ruby myapp.rb
Output:
== Sinatra (v3.0.4) has taken the stage on 4567 for development with backup from Thin
If you uninstall thin, you get:
== Sinatra (v3.0.4) has taken the stage on 4567 for development with backup from Puma
A fix would be either to change the docs, or to move this line to the bottom of the servers list so that puma is considered first. I'm happy to do a PR for either, but not sure which behaviour is intended.