gpt4 book ai didi

ruby-on-rails - 我可以在 Rails 3 中以编程方式更改 config.cache_classes 吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:33 25 4
gpt4 key购买 nike

我有一些针对我的开发 Rails 服务器运行的 iPhone 客户端测试。如果我在 Rails 配置中打开类缓存,整个套件的运行速度将提高一个数量级。另一方面,当我没有实际运行测试时,这会减慢开发速度。

我希望测试套件在开始时执行一个操作以打开类缓存,并在最后执行另一个操作以再次关闭类缓存。

这可能吗?如果是,怎么办?

最佳答案

并非没有一些严重的黑客攻击。 Rails 会花很多功夫来确保您的文件在每次请求时都重新加载(当 cache_classes=false 时)。 cache_classes 配置变量的值在多个地方被初始化程序使用,其中最重要的是:

  • 当 cache_classes 为 require 时使用 true 加载 ruby​​ 文件(意味着它们不再可重新加载)
  • 设置调度程序回调以在 cache_classesfalse 时根据每个请求重新加载应用程序

您确实可以访问 cache_classes 变量的值,并且您甚至可以根据需要更改它:

Rails.configuration.cache_classes = true

但是,这对正在运行的 Rails 实例没有影响,因为使用该值的初始化程序仅在 Rails 应用程序启动时运行一次。

这意味着,除非您准备好投入一些认真的时间和黑客努力,否则您无法真正避免重新启动您的服务器。因此,您需要注意的是通过您的测试套件控制这个重启过程。

例如你可以尝试重启 rails from within rails 。这将允许您定义一个操作,您的测试套件可以在它开始执行之前立即执行(以正确的模式重新启动服务器),以及服务器可以在所有测试完成后执行的另一个操作,以设置 cache_classes 重新启动所有内容到过去的样子。您将通过环境变量 like this post suggests 控制缓存类的值。

仍然需要一些工作来设置所有这些并使其卡在一起,但如果您想要一个“自动神奇”的解决方案,这可能是您最好的选择。

关于ruby-on-rails - 我可以在 Rails 3 中以编程方式更改 config.cache_classes 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com