☘️
Docker + Rails で開発していてソースコードが即時反映されない時のたったひとつのcoolな答え
TL;DR
-
config/environments/development.rb
で
-config.file_watcher = ActiveSupport::FileUpdateChecker
にしろ - 関連記事
- ここの記事と内容はほぼ同じです
- 【Rails6】Dockerコンテナを再起動しないとソースコードが反映されない | Qiita
- それでも反映されない時はこれを疑う
- dockerでrails5環境構築 | Qiita
- ここの記事と内容はほぼ同じです
Docker + Rails で開発していてソースコードが即時反映されない
Docker を使わずに開発しているときはそんなことなかったのに、
コンテナで開発し始めてからソースコードが即時反映されない…… そんな悩みにぶつかった人は少なくないんじゃないでしょうか。
rails s
しなおせば反映されたりするんだけど不便……
そんな時に見直したいのがこの設定です。
関連記事にも書いてありますが設定自体は簡単で、
config/environments/development.rb
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
↓
config/environments/development.rb
config.file_watcher = ActiveSupport::FileUpdateChecker
とするだけです。
これは何?
詳しくは下記 RubyDoc.info を読んでもらえるとわかりやすいんですが、
ざっくりと
- ファイルの保存イベントを監視するのか
- ファイルを追跡して変更を監視するのか
みたいな違いがあります。
なので、コンテナを使って開発しているときにファイルの保存イベントをlistenできない結果
ソースコードが即時反映されない問題が発生するんですね。
- Class: ActiveSupport::EventedFileUpdateChecker | RubyDoc.info
- Class: ActiveSupport::FileUpdateChecker
それでも反映されない時は
コンテナとホストマシンの内部時間に差があるとうまく動かないことがあるようです。
下記記事参照。
- dockerでrails5環境構築 | Qiita
Discussion