puma で localhost gem がサポートされた

puma 5.5.0socketry/localhost gem とのインテグレーションがサポートされた。

The headline feature of this release is a new integration with the localhost gem. Localhost takes care of creating a self-signed SSL certificate for you in development. Require it in your config.ru:

使ってみた

Gemfile:

group :development do
  ...
  gem 'localhost'
  ...
end

起動する。(このへんはREADMEを参考 )

$ bundle exec puma -b 'ssl://localhost:9292' config.ru
Puma starting in single mode...
* Puma version: 5.5.0 (ruby 3.0.2-p107) ("Zawgyi")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 40978
* Listening on ssl://127.0.0.1:9292?
* Listening on ssl://[::1]:9292?
Use Ctrl-C to stop

http と https 両方のアクセスに対応したい場合は、2つ書く。

$ puma -b ssl://localhost:9292 -b tcp://localhost:9393 config.ru

dockerの場合は外部アクセスできなければいけないので、下記のように 0.0.0.0 にバインドする必要あり。

$ bundle exec puma -b ssl://0.0.0.0:9292 config.ru

ブラウザによってはオレオレ証明でアクセスできない場合があるので注意。

その場合は、下記を参考。

2021-11-07 “thisisunsafe” オレオレ証明書を通す魔法のコトバ | TTIL