10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

bin/devでrails sを起動するとbinding.pryなどの標準入力が見えなくなる

Last updated at Posted at 2023-12-21

Rails 7でbin/devでデバッグ時の問題と対処法

Rails 7系でbin/devを使用してサーバーを起動している際に、binding.pryやdebugを利用すると、プロンプトに入力した文字が表示されない問題があります。
具体的には、コードにbinding.pryを挿入しても、入力した文字が見えず、入力が空白のように見えます。

この問題の原因は、Rails 7でbin/devによって使用されているForemanが標準入力を適切にハンドリングできないためです。

現状の対処法

pry-remoteの使用

  • Gemfileにgem 'pry-remote'を追加し、bundle installを実行します。
  • binding.pryの代わりに、binding.remote_pryをコードに挿入します。
  • 別のターミナルから$ pry-remoteを実行すると、そのターミナルでデバッグが可能になります。

デメリット:多くのターミナルを開く必要があり、手間がかかる。

ForemanとRailsサーバーを別々に実行

bin/devを使用すると、Procfile.devがForemanで実行されます。これはCSSおよびJSのウォッチャーによって引き起こされますが、これらはファイルの変更のみを監視するため、サーバー自体には関与しません。

Procfileからweb: unset PORT && bin/rails serverを削除します。これにより、CSSウォッチャーとJSウォッチャーのみが残り、以下のようになります。

js: yarn build --watch
css: yarn build:css --watch

この方法では、2つのターミナルを開く必要があります。

bin/rails s
bin/dev

このセットアップにより、pryはサーバーターミナルで通常通り動作し、ウォッチャーも問題なく機能します。

参考

https://stackoverflow.com/questions/72532475/binding-pry-not-works-with-command-bin-dev
https://scrapbox.io/ruby-jp/bin%2Fdev_%E3%81%A7%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%81%A8_debug.gem_%E3%81%8C%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8B

10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?