我有一个 cron 作业,每十分钟解析几个 XML 提要,并使用该render: file
方法创建一些部分以包含在我的 Rails 项目的每个页面上。问题是,很明显,它们在服务器重新启动之前不会刷新。
无论如何,我能做些什么来强制 Rails 每次都刷新这个文件?
提前致谢。
我有一个 cron 作业,每十分钟解析几个 XML 提要,并使用该render: file
方法创建一些部分以包含在我的 Rails 项目的每个页面上。问题是,很明显,它们在服务器重新启动之前不会刷新。
无论如何,我能做些什么来强制 Rails 每次都刷新这个文件?
提前致谢。
改用:
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。其他方式可以切换到开发模式,但这会使您的应用程序变慢。