有谁知道如何指示 rails 不缓存 lib 文件夹中包含的类?
最佳答案
“缓存类”我想你的意思是在处理新请求之前,app 目录中的源文件会自动重新加载到开发环境中?
这与缓存无关,Ruby 的正常行为是,只要进程运行,就只读取和解析一次源文件,再也不会。 Rails(实际上是 ActiveSupport::Dependencies)提供了一种在处理请求之前重新加载整个代码的机制。在开发环境中,这很有用,因为您不想在每次更改代码时都重新启动本地网络服务器。在生产环境中,这会严重损害性能,因此被关闭。
默认情况下,应用类被标记为可重新加载。您可以使用 unloadable
类方法将任意类标记为在开发环境中处理请求之前重新加载:
class MyClass
unloadable # mark this class as reloadable before a request is processed
# …
end
请注意,并非每个类都可以很好地处理卸载。只要您在一个由 Rails 的自动加载机制找到并加载的源文件中定义您的类,您就可以了。但是,如果您在其他地方重新打开您的类(class)以对其进行 monkeypatch,可能会遇到麻烦,因为自动加载不会捕捉到这一点。
关于ruby-on-rails - 防止 Rails 2/3 缓存 Lib/Classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3420178/