2012-06-01 42 views
0

我的rails应用程序每天抓取一堆xml feed,将它们加载到db中,然后将它们显示在聚合中。我想我可以节省服务器内存,如果我只是输出页面作为静态文件,并让他们直接由前端服务器(在我的情况下nginx)。我在一个IRC会议室询问,并被告知不使用rails并使用rake任务创建文件。但是,我想知道最简单的方法是什么去做这件事。布局,资产文件和内容显然在钢轨的不同位置,所以我想我需要结合布局和内容,然后插入CSS/JavaScript。如何将我的Rails应用程序变成静态内容?

欢迎任何想法/想法。

[解决]

我最终使用的例子从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

也许middlemanjekyll可以使用?

我只使用中间人,但您可以使用rake任务和支持脚本获取最新的xml提要,并将其粘贴到中间人数据目录中(即data/feeds.yml),然后使用您现有的布局呈现该yaml文件。 Middleman和rails共享很多类似的渲染技术等。

您必须稍微修改布局。

如果你愿意,你或许可以找到用其他东西代替yaml的宝石。

相关问题