Приложение Dockerized Rails 5 RC1 не получает обновления для контроллеров и моделей в разработке
У меня довольно большой опыт разработки приложений на Rails 4 для Mac OS X + Docker Machine + Docker Compose, но кое-что изменилось с тем, как Rails 5 кэширует файлы в среде разработки (в настоящее время тестируется с RC1).
После запуска приложения с docker-compose up
приложение работает нормально в режиме разработки.
Но если я внесу изменения в контроллер или модель, единственный способ, которым я смогу отразить это в приложении, - это остановить сервер и запустить его обратно.
Так что теперь мой рабочий процесс выглядит примерно так, когда мне нужно внести изменения в контроллер или модель:
- Внести изменения в класс контроллера / модели.
- Остановить сервер с
Ctrl + C
, - Запустите резервное копирование сервера с
docker-compose up
, - Подождите на сервере для запуска.
- Запустите все, что я запускал в браузере.
По меньшей мере, необходимость делать шаги 2-4 раздражает, а не то, к чему я привык в Rails 4.
Я пошел на шаг дальше и удалил Spring, используя инструкции по удалению, но я все еще получаю то же самое поведение.
Я также искал любые настройки, которые я мог найти в config/environments/development.rb
связанные с железной хваткой среды выполнения Rails на моделях и классах контроллеров, и я ничего не смог найти. (Я предполагаю, что он действительно хочет полагаться на просмотр файловой системы, чтобы выборочно загружать изменения, и что-то не переносится с изменения на Mac на VirtualBox.)
Любые другие идеи о том, что я могу попробовать? Или есть какие-то новые настройки, связанные с тем, как работает более агрессивное кэширование?
1 ответ
Я использую Rails 5 rc1.
Rails 5 представил некоторые "улучшения" в перезагрузке кода, но, похоже, он не работает с Docker в OS X.
Так в config/environments/development.rb
Я заменил
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
с
config.file_watcher = ActiveSupport::FileUpdateChecker
Похоже, что для наблюдателя файлов ActiveSupport::EventedFileUpdateChecker событие изменения не происходит для общих файлов докер-машины