🐈
[解決済] rails7でpry-byebugが動かなかった件
今回の問題
rails7にアップデートすると、binding.pryの動作がおかしくなった。
通常は以下のプロンプトで入力が見えるはずだが、見えないのである。
22:37:54 web.1 |
[1] pry(#<**:**>)>
解決策
Foremanが導入されたことによりこの問題発生したため、Foremanをやめて起動スクリプトを書き換えた
diff --git a/entrypoint.local.sh b/entrypoint.local.sh
index 9346263..059fcfb 100644
--- a/entrypoint.local.sh
+++ b/entrypoint.local.sh
-bin/dev
+# https://github.com/evanw/esbuild/issues/1511
+yarn build --watch < /dev/zero &
+yarn build:css --watch &
+bundle exec pumactl start
- entrypoint.local.shは、起動スクリプト
上記解決策に至った経緯
標準で使われているのでForemanやめたくなかったけど、いろいろ試行錯誤した結果やめざる負えなかったので経緯をする
Try1: $stdout.sync = true を使ってみる
マニュアルを見るとこの記述この記述があったので試してみたがだめでした。
バッファを無効にするだけなのでその通りといえばその通りだったかもしれません。
Try2: byebug server? につなげる
この記事を見つけていいかも!と思ってやってみましたが、byebugのした後に接続するとプロンプトが出てこない
ので採用しませんでした。
ちなみに接続方法は以下のような感じです。
$ bundle exec byebug -R localhost:8989
詳しく見ると上記の解決策はあるかもしれないですが、色分けもできなくなるので止めました。
Try3: pry-remoteを使おうとしてみる
pry-remoteを使えばTry2の減少を解決できるかなと思いましたが、issueが立っておりpry-remoteはまだつかえない?ようなので諦めました。
Try4: Foremanやめる
これが最終的に行き着いたところなのですが、
diff --git a/entrypoint.local.sh b/entrypoint.local.sh
index 9346263..059fcfb 100644
--- a/entrypoint.local.sh
+++ b/entrypoint.local.sh
-bin/dev
+yarn build --watch &
+yarn build:css --watch &
+bundle exec pumactl start
上記のようにすると、Cannot use import statement outside a module
というエラーになりました。ビルド結果を見るとjsが作られてないようでIssueが立っていました。
解決方法はいろいろあったのですが、開発環境のみに起きていたので起動スクリプトの
yarn build時に< /dev/zero
をつけるようにしました。
この仕組みを使っているサービス
MarkdownやAsciidocで簡単にスライド作れるwebサービス
Discussion