🎉

Railsでbinding.pryがうまく動かなかったので、無理やり解決した。

2022/12/30に公開

問題の事象

binding.pryを使用したところ、書いた場所では止まるが、入力値がenterを押すまで表示されない。
あくまで入力値が表示されないだけであるため、確認したい変数(params等)を入力後、enterで欲しい情報は取得できる。
使えない程では無いが、地味に不便である。

[1] pry(#<ArticlesController>)> test # ここがenter押すまで見えない。
=> "テスト" # これは見える。

開発環境

  1. Ruby 3.1.2
  2. Rails 7.0.4
  3. docker

原因

詳細については調査中だが、foremanが原因と分かった。
自分のコードではforemanを使用し、railsとjs、cssの3つを動かしていた。
試しにforemanを使わず、rails cで立ち上げたところ、問題の事象が起こらないことが確認できた。

解決策

ほぼ上で書いた通りだが、foremanで起動せず、railsとjs、cssをそれぞれ3つのコンソールで動かした。

# rails
# dockerを使っているので、起動後、コンテナに入る。
docker-compose up -d 
docker-compose exec web bash
rails server -p 3000 -b '0.0.0.0'

# js
docker-compose up -d 
docker-compose exec web bash
yarn build --watch

# css(tailwind)
docker-compose up -d 
docker-compose exec web bash
rails tailwindcss:watch

あとがき

明らかにスマートな方法では無いので、良い方法があればご教授願います。

Discussion