我的rails应用程序每天提取一次xml提要,将它们加载到数据库中,然后以聚合方式显示它们。我想我可以节省服务器内存,如果我只是将页面输出为静态文件并让它们直接由前端服务器(在我的情况下为nginx)提供。我在一个IRC房间询问并被告知不使用rails并使用rake任务创建文件。但是,我想知道最简单的方法是做什么。布局,资产文件和内容显然位于rails的不同位置,所以我想我需要结合布局和内容然后插入css / javascript。
欢迎任何想法/想法。
[解决]
我最终使用render_to_string from a rake task中的示例并进行了一些调整,以便在我的rake任务中获得以下代码:
views_path = Rails.root.to_s + "/app/views"
av = ActionView::Base.new(views_path)
av.class_eval do
include ApplicationHelper
end
products = Product.all
a = av.render(:template => "products/show", :layout => "layouts/application", :locals => { :@products => products } )
然后渲染模板和布局,并允许在模板中使用@products实例变量,就像使用控制器一样。
然后我只需要将渲染的输出写入文件。
答案 0 :(得分:0)
对于此类任务,您可以使用Rails' built in caching mechanisms。
有another stack overflow post显示了一些示例代码,说明如何构建代码以从rake任务中手动编写缓存。
答案 1 :(得分:0)