在Rails中渲染外部修改的文件

时间:2009-06-07 15:25:45

标签: ruby-on-rails xml rendering cron

我有一个cron作业每10分钟解析几个XML feed,并使用render: file方法创建一些部分以包含在我的Rails项目中的每个页面上。问题是,显然,在服务器重新启动之前它们不会刷新。

无论如何,我该怎样做才能强制rails每次都刷新这个文件?

提前致谢。

3 个答案:

答案 0 :(得分:6)

改为使用:

render :inline => File.read(file_name), :layout => true

答案 1 :(得分:2)

我认为你在滥用渲染(:file)。这绝对不是它的用途。渲染部分应该用于在多个位置呈现模块化的erb(或您使用的任何模板)代码,而不是数据加载技术。您正在使用它(似乎)来加载动态变化的数据。

我认为你真正要做的就是片段缓存,但没有更多的上下文,我可能是错的。

有关片段缓存的精彩演练:http://www.railsenvy.com/2007/3/20/ruby-on-rails-caching-tutorial-part-2

可能你的cron作业会运行一个脚本/跑步者脚本来创建你想要缓存的片段。

如果我不在这里,请尝试澄清您正在加载的文件类型以及您要完成的内容。

答案 2 :(得分:1)

发生这种情况是因为在生产模式下,Rails会使其所有类和视图/部分变为现金。要解决此问题,您可以在片段缓存块内渲染部分,并在想要刷新块内容时使用方法expire_fragment。其他方式可以切换到开发模式,但它会使您的应用程序变慢。