LoginSignup
82
55

More than 3 years have passed since last update.

【Rails6】Dockerコンテナを再起動しないとソースコードが反映されない

Last updated at Posted at 2020-06-13

いちいちコンテナの再起動めんどくさすぎ問題

環境構築は初学者には難しいと言われていたがなんとか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.rbfile_watcherという部分です。
この設定ファイル内でconfig.file_watcher = ActiveSupport::EventedFileUpdateCheckerによって変更イベントを検知しています。(名前にもEventedとありますね。)

しかし、Dcokerによる環境構築ではvolumeで共有ファイルとしてホスト側のディレクトリを仮想環境にマウントしており、この方式だと変更イベントが発生しないようです。故にファイルの変更を検知することができず、コンテナを再起動しないとソースコードの変更がされないという事態になります。

config.file_watcher = ActiveSupport::FileUpdateCheckerはソースコードの更新をサーバー起動中にチェックする機能なのでこれでviewだけでなくController処理の変更も再起動せずによくなります。

最後まで読んでいただきありがとうございます。

今後ともアウトプットの一環として投稿させていただきます。
一人でも多くの方の問題解決に役立てれば幸いです。
なにか間違った点があればご指摘いただけると幸いです。

82
55
5

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
82
55