【发布时间】:2011-03-26 02:41:56
【问题描述】:
有谁知道如何指示 rails 不缓存 lib 文件夹中包含的类?
【问题讨论】:
标签: ruby-on-rails ruby optimization caching class
有谁知道如何指示 rails 不缓存 lib 文件夹中包含的类?
【问题讨论】:
标签: ruby-on-rails ruby optimization caching class
我认为“缓存类”是指在处理新请求之前,应用程序目录中的源文件会自动重新加载到开发环境中?
这与缓存无关,Ruby 的正常行为是,只要进程运行,就读取和解析源文件一次,不再重复。 Rails(实际上是 ActiveSupport::Dependencies)提供了一种在处理请求之前重新加载整个代码的机制。在开发环境中,这很有用,因为您不想在每次更改代码时都重新启动本地网络服务器。在生产环境中,这会严重影响性能,因此被关闭。
默认情况下,应用程序类被标记为可重新加载。您可以使用unloadable 类方法在开发环境中处理请求之前标记要重新加载的任意类:
class MyClass
unloadable # mark this class as reloadable before a request is processed
# …
end
请注意,并非每个类都可以很好地卸载。只要您在一个由 Rails 的自动加载机制找到并加载的源文件中定义您的类,您可能就很好了。但是,如果您在其他地方重新打开您的课程以对其进行猴子补丁,可能会遇到麻烦,因为自动加载不会捕捉到这一点。
【讨论】:
这也可以通过不使用lib/ 目录来完成,而是通过在app/helpers 目录中存储任何类或帮助文件来完成。这样,它们将在开发期间重新加载并在生产期间缓存。
【讨论】: