【发布时间】:2009-06-07 15:25:45
【问题描述】:
我有一个 cron 作业,每十分钟解析几个 XML 提要,并使用 render: file 方法创建一些要包含在 Rails 项目的每个页面上的部分内容。问题是,很明显,它们在服务器重新启动之前不会刷新。
无论如何,我该怎么做才能强制rails每次都刷新这个文件?
提前致谢。
【问题讨论】:
标签: ruby-on-rails xml rendering cron
我有一个 cron 作业,每十分钟解析几个 XML 提要,并使用 render: file 方法创建一些要包含在 Rails 项目的每个页面上的部分内容。问题是,很明显,它们在服务器重新启动之前不会刷新。
无论如何,我该怎么做才能强制rails每次都刷新这个文件?
提前致谢。
【问题讨论】:
标签: ruby-on-rails xml rendering cron
改用:
render :inline => File.read(file_name), :layout => true
【讨论】:
我认为你在滥用渲染(:文件)。这绝对不是它的预期用途。渲染部分应该用于在多个位置渲染模块化的 erb(或您使用的任何模板语言)代码,而不是数据加载技术。您正在使用它(看起来)来加载动态变化的数据。
我认为您真正想做的是片段缓存,但如果没有更多上下文,我可能会错。
有关片段缓存的精彩演练:http://www.railsenvy.com/2007/3/20/ruby-on-rails-caching-tutorial-part-2
您的 cron 作业可能会运行一个脚本/运行器脚本,该脚本会创建您要缓存的片段。
如果我不在此处,请尝试澄清您正在加载的文件类型以及您要完成的任务。
【讨论】:
这是因为在生产模式下,Rails 兑现了它的所有类和视图/部分。为了解决这个问题,您可以在片段缓存块中渲染您的部分,并在您想要刷新块内容时使用方法 expire_fragment。其他方式可以切换到开发模式,但这会使您的应用程序变慢。
【讨论】: