ruby-on-rails - 防止 Rails 2/3 缓存 Lib/Classes

标签 ruby-on-rails ruby optimization caching class

有谁知道如何指示 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/

相关文章:

ruby-on-rails - 如何在 SCSS 中 +=?

ruby-on-rails - 防止 Rails 在执行 ssh 时挂起?

ruby-on-rails - 将 Rake 与 Rufus 一起使用

c# - 是否可以从 C# 中的对象修改或删除匿名类型?

ruby-on-rails - 如何更改 Rails 脚手架中的默认模型模板?

ruby-on-rails - 模型/ActiveRecord 不保存新数据

html - ruby on rails 为什么在 View 中加载 css 时布局没有改变?

ruby-on-rails - Rails rake db :rollback on Heroku not working. 现在我不能添加任何新的迁移

r - 遗传算法中的处理约束 : implementing the death penalty

python - ORTOOLS [python] 中的多个 MILP 解决方案