背景
現在就職のためのポートフォリオを作成しているのですがその際、Docker環境のrailsでソースコードを書 いているときにソースコードが即時反映されなかったので、即時反映される方法を記しておきます。
即時反映させる方法について
自分が調べた限りでは即時反映させる方法は2つありました。
一つ目ですが
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
これを・・・
config.file_watcher = ActiveSupport::FileUpdateChecker
とすれば大丈夫です!
何をしているのか?
これは
・ファイルの保存イベントを監視するのか
・ファイルを追跡して変更を監視するのか
の違いがあるらしいです!
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
の状態だとファイルを追跡して変更を監視する状態になっています。
ですのでこれを
config.file_watcher = ActiveSupport::FileUpdateChecker
に変更して、ファイルの保存イベントを監視する状態に変更してあげるとソースコードが即時反映されるようになります。
詳しく知りたい方は以下参考にしてみてください。
・Class: ActiveSupport::EventedFileUpdateChecker | RubyDoc.info
・Class: ActiveSupport::FileUpdateChecker
2つ目の方法ですが
開発ディレクトリをDockerコンテナにマウントすることで編集時に即時反映することが可能です。
どういうことかというと・・・
version: '3'
services:
db:
platform: linux/x86_64
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: root
ports:
- "3306:3306"
volumes:
- ./tmp/db:/var/lib/mysql
mangabestgram:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/mangabestgram
ports:
- "3000:3000"
depends_on:
- db
開発環境一式をdocker-composeで管理しているので、docker-compose.ymlで上記のようにvolumesの設定をすることで、実行ディレクトリをそのままdockerのアプリ実行ディレクトリにマウントすることができます。
volumes:
- .:/mangabestgram #この部分でマウントしている(実行環境のディレクトリに随時書き替えてください)
最後まで閲覧ありがとうございました
自分の勉強のアウトプット用なので、読みにくい点や分かりにくいところも多々あるとは思いますが、ご了承ください。
他に追記することや間違っていることなどあればコメントなどしていただけると幸いです。