はじめに
個人開発のアプリ制作を始めました。
調べながらの実装になるので、メモとして記載しています。
※注意※
プログラミング学習中の初心者です。
記述に間違いがあれば、ご指摘いただけますと幸いです。
環境
Mac M1
rails 7.0.7.2
ruby 3.2.0
Node.js 20.2.0
Yarn 1.22.19
発生したエラー
HTTP parse error, malformed request: #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Are you trying to open an SSL connection to a non-SSL Puma?>
解決方法
$ bin/div
での起動ではなく、下記コードで起動する。
$ bundle exec pumactl start
なぜHTTPS通信をする必要があったか
今回LINE認証をするにあたって、下記記事とLINEのドキュメントを参考にしながら進めていました。
開発環境での動作を確認しておきたかったため、ローカル開発環境でSSL/TLS証明書を作成するためのツール、mkcertを導入しましたが、上記エラーが出て進みませんでした。。。
結果SSL証明書は問題なく発行できており、そもそもの起動のコマンドを変えることで解決しました。
$bin/dev
でもpumaは読み込んではいたのですが、SSLがうまくいった下記のコマンドのログと見比べてみると、SSLのパスワードを読み込んでいなかったので、そこが原因かと思われます。
$ bin/dev
15:38:29 web.1 | => Booting Puma
15:38:29 web.1 | => Rails 7.0.8 application starting in development
15:38:29 web.1 | => Run `bin/rails server --help` for more startup options
15:38:29 web.1 | Puma starting in single mode...
15:38:29 web.1 | * Puma version: 5.6.7 (ruby 3.2.0-p0) ("Birdie's Version")
15:38:29 web.1 | * Min threads: 5
15:38:29 web.1 | * Max threads: 5
15:38:29 web.1 | * Environment: development
15:38:29 web.1 | * PID: 76794
15:38:29 web.1 | * Listening on http://127.0.0.1:3000
15:38:29 web.1 | * Listening on http://[::1]:3000
15:38:29 web.1 | Use Ctrl-C to stop
bundle exec pumactl start
Puma starting in single mode...
* Puma version: 5.6.7 (ruby 3.2.0-p0) ("Birdie's Version")
* Min threads: 5
* Max threads: 5
* Environment: development
* PID: 76966
* Listening on ssl://0.0.0.0:3000?cert=config%2Fcerts%2Flocalhost.pem&key=config%2Fcerts%2Flocalhost-key.pem&verify_mode=none
Use Ctrl-C to stop
参考