我有相当多的在 Mac OS X + Docker Machine + Docker Compose 上开发 Rails 4 应用程序的经验,但是随着 Rails 5 在开发环境中缓存文件的方式发生了一些变化(目前正在使用 RC1 进行测试)。
docker-compose up启动应用后,应用在开发模式下正常运行。
但是,如果我对 Controller 或模型进行更改,我可以在应用程序中得到反射(reflect)的唯一方法是停止服务器并重新启动它。
因此,当我需要更改 Controller 或模型时,我的工作流程现在看起来像这样:
Ctrl + C 停止服务器。docker-compose up 启动服务器备份。至少可以说,需要执行步骤 2-4 很烦人,而不是我在 Rails 4 中所习惯的。
我更进一步,使用 Removal instructions 卸载了 Spring。 ,但我仍然得到相同的行为。
我还在 config/environments/development.rb 中搜索了与 Rails 运行时对模型和 Controller 类的铁腕控制相关的任何设置,但我找不到任何东西。 (我假设它真的想依靠观察文件系统来选择性地加载更改,并且从 Mac 上的更改到 VirtualBox 并没有发现一些东西。)
关于我可以尝试什么的任何其他想法?或者是否有任何与这种更激进的缓存工作方式相关的新设置?
最佳答案
我正在使用 Rails 5 rc1。
Rails 5 对代码重新加载进行了一些“改进”,但它似乎不适用于 OS X 上的 Docker。
所以在config/environments/development.rb中,我替换了
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
与
config.file_watcher = ActiveSupport::FileUpdateChecker
似乎对于 ActiveSupport::EventedFileUpdateChecker 文件观察器,docker-machine 共享文件不会发生更改事件
关于ruby-on-rails - Dockerized Rails 5 RC1 应用程序未获取开发中 Controller 和模型的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144122/