49
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

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

環境構築は初学者には難しいと言われていたがなんとか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処理の変更も再起動せずによくなります。

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
49
Help us understand the problem. What are the problem?