15

我有相当多的在 Mac OS X + Docker Machine + Docker Compose 上开发 Rails 4 应用程序的经验,但是随着 Rails 5 在开发环境中缓存文件的方式发生了一些变化(目前正在使用 RC1 进行测试)。

使用 启动应用程序后docker-compose up,应用程序在开发模式下正常运行。

但是,如果我对控制器或模型进行更改,我可以在应用程序中得到反映的唯一方法是停止服务器并重新启动它。

所以现在当我需要对控制器或模型进行更改时,我的工作流程看起来像这样:

  1. 更改控制器/模型类。
  2. 停止服务器Ctrl + C
  3. 使用 启动服务器备份docker-compose up
  4. 等待服务器启动。
  5. 运行我在浏览器中运行的任何内容。

至少可以说,需要执行步骤 2-4 很烦人,而不是我在 Rails 4 中所习惯的。

我更进一步,使用Removal instructions卸载了 Spring ,但我仍然得到相同的行为。

我还搜索了config/environments/development.rb与 Rails 运行时对模型和控制器类的控制相关的任何设置,但我找不到任何东西。(我假设它真的想依靠观察文件系统来选择性地加载更改,并且没有从 Mac 上的更改中获取到 VirtualBox 的某些内容。)

关于我可以尝试什么的任何其他想法?或者是否有任何与这种更激进的缓存如何工作相关的新设置?

4

1 回答 1

16

我正在使用 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 共享文件不会发生更改事件

于 2016-07-07T07:02:44.173 回答