mat*_*sko 9 ruby optimization caching ruby-on-rails class
有谁知道如何指示rails不缓存lib文件夹中包含的类?
通过"缓存类",我想你的意思是,在处理新请求之前,app目录中的源文件会自动在开发环境中重新加载吗?
这与缓存无关,Ruby的正常行为是一次读取和解析源文件,只要进程运行就不会再次.Rails(ActiveSupport :: Dependencies实际上)提供了一种在处理请求之前重新加载整个代码的机制.在开发环境中,这很有用,因为您不希望为代码执行的每个更改重新启动本地Web服务器.在生产环境中,这会严重影响性能,因此会被关闭.
默认情况下,应用程序类标记为可重新加载.您可以使用unloadableclass方法在开发环境中处理请求之前标记要重新加载的任意类:
class MyClass
unloadable # mark this class as reloadable before a request is processed
# …
end
Run Code Online (Sandbox Code Playgroud)
请注意,并非每个班级都可以很好地卸载.只要您在一个源文件中定义您的类,该文件由Rails的自动加载机制找到并加载,您可能就是好的.但是,如果你在其他地方重新开放你的课程以进行monkeypatch,可能会遇到麻烦,因为自动加载不会发现这一点.