#いちいちコンテナの再起動めんどくさすぎ問題
環境構築は初学者には難しいと言われていたがなんとかDockerでの環境構築に成功で歓喜!!
せっかく環境構築したしAPIでも叩いてみるか、、と思いコードを書いていたらリロードしても変更が即時反映されない、、docker-compose restartでコンテナ再起動したら変更反映されるけどコード変更のたびにこれするの時間もったいなすぎる、、これの解決策を備忘録として投稿させていただきます。
やり方はめちゃくちゃ簡単です。
##環境
- Windows 10 Pro
- Docker for Windows
- Rails 6.0
- Ruby 2.7
- MySQL8.0
##方法
Railsのアプリケーションファイルにあるconfig/environments/development.rb
の末尾の方にある
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
を
config.file_watcher = ActiveSupport::FileUpdateChecker
に変更するだけです!
##補足説明
ファイルの変更を検知しているのはconfig/environments/development.rb
のfile_watcher
という部分です。
この設定ファイル内でconfig.file_watcher = ActiveSupport::EventedFileUpdateChecker
によって変更イベントを検知しています。(名前にもEventedとありますね。)
しかし、Dcokerによる環境構築ではvolumeで共有ファイルとしてホスト側のディレクトリを仮想環境にマウントしており、この方式だと変更イベントが発生しないようです。故にファイルの変更を検知することができず、コンテナを再起動しないとソースコードの変更がされないという事態になります。
config.file_watcher = ActiveSupport::FileUpdateChecker
はソースコードの更新をサーバー起動中にチェックする機能なのでこれでviewだけでなくController処理の変更も再起動せずによくなります。
#最後まで読んでいただきありがとうございます。
今後ともアウトプットの一環として投稿させていただきます。
一人でも多くの方の問題解決に役立てれば幸いです。
なにか間違った点があればご指摘いただけると幸いです。