開発環境
Docker: v19.03.13
Ruby: v2.5.7
Rails: v5.2.4.4
pry: v0.13.1
pry-byebug: v3.9.0
PostgreSQL: psql (PostgreSQL) 13.0 (Debian 13.0-1.pgdg100+1)
内容
Docker環境にて、Ruby on Rails の Gem Pry-byebug
を導入し、処理を止めて変数やパラメータ、処理の流れを確認していたりしてたのですが急に止まってくれなくなりました。。。
本当に。急に。
コンソール上の表示では、ブレークポイントで=>
マークは付くのですが下のように停止してくれずにブレークポイントをスルーしてレンダリングが始まってしまう状況に陥りました。
[1] pry(#<HomesController>)>
と、デバッグ時のコマンド入力できそうな部分も表示はされるのですが何もしていないのにそのままスルーされてレンダリング...
初めての挙動でしたので、ネット上で色々と調べてみたのですがどこにも情報が載ってなく、2日程ハマりました...
解決策
結論から申し上げますと、アプリケーションルートフォルダ直下にあるtmp
を削除することで正常動作するようになりました。
どうして、tmpフォルダを削除したのかというところですがネット上で他の言語も含めて情報を見ていたらキャッシュ
がtmp
に保存されていると知りまして、「もしや、この影響で不具合が起きてるのでは?? キャッシュなら削除したって問題ない??Gitで管理してるし不具合起きたら戻せば良いよね...」と思い、削除してみたら当たりました。笑
tmpって、Temporary File(=一時ファイル)を指しているんですね...勉強になります。笑
こういうフォルダやファイルのネーミングからヒントを得られましたね。意味を知っておくことも重要なんだなと感じました。
Railsガイドを見ても、同じようにアクションキャッシュなどを格納するフォルダと書いてあります。
ただ、失敗したなと思うのは Railsガイドには
rails tmp:cache:clearで、tmp/cacheを空にします。
rails tmp:sockets:clearで、tmp/socketsを空にします。
rails tmp:screenshots:clearで、tmp/screenshotsを空にします。
rails tmp:clearで、cache、sockets、screenshotディレクトリを空にします。
rails tmp:createで、cache、sockets、pidsのtmpディレクトリを作成します。
と、記載してありました。
一気にフォルダを消すのではなく、このコマンドを実行して切り分け行えたらもっと理解を深められたなぁと反省しております。
正常動作に戻ってしまったので原因に関しては掴めませんでしたが、同じような状況になられましたらお試し頂けたらと思います。