使用Docker容器(开发环境)时的Rails控制器缓存

3

我正在运行一个Docker容器(Rails应用程序)和一个运行PostgreSQL的数据库容器。

我挂载了本地工作目录到我的应用程序容器,以便我可以在本地工作,并使更改反映在应用程序容器中。

在这样做的过程中,除了我的控制器似乎出现了一些奇怪的缓存行为外,一切都正常。

例如

路由:

get '/something', to: 'something#show'

控制器

class SomethingController < ApplicationController
    def show
        render text: "Hello 1"
    end
end

当我访问myapp/something时,显示“Hello 1”,非常完美!
然后我编辑了我的控制器:
class SomethingController < ApplicationController
    def show
        render text: "Hello 2"
    end
end

当我访问myapp/something时,为什么还是会显示“Hello 1”?如果我返回一个HTML视图,它就可以更新,那么为什么我的控制器中的更改没有反映出来呢?唯一让这些更改生效的方法是在路由文件中进行更改并保存,这似乎刷新了被缓存的内容。注意:我没有在浏览器中缓存,我已经关闭了缓存,并且每次都进行了硬重载。有人能解释一下吗?我正尝试遵循这个教程:https://www.youtube.com/watch?v=NEdDa3Zqu7s&list=PLbG4OyfwIxjEe5Y3hQCiQjYnSgRH051iJ&index=3。谢谢。
1个回答

8

您是如何定义development.rb文件的?

请确保将缓存选项设置为false:

config.reload_classes_only_on_change = false
config.cache_classes = false

如果这个方法不奏效,你可能需要阅读Rails缓存方面的文档:http://guides.rubyonrails.org/caching_with_rails.html

Frenus,您是传奇。非常感谢您。我有config.cache_classes = false,但没有config.reload_classes_only_on_change = false,这似乎解决了问题。 - Brad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接