0

我的 rails 应用程序每天一次获取一堆 xml 提要,将它们加载到数据库中,然后将它们汇总显示。我想如果我只是将页面输出为静态文件并让它们直接由前端服务器(在我的例子中是 nginx)提供服务,我可以节省服务器内存。我在 IRC 房间询问,并被告知不要使用 rails 并使用 rake 任务创建文件。但是,我想知道最简单的方法是什么。布局,资产文件和内容显然在rails中的不同位置,所以我想我需要结合布局和内容,然后插入css/javascript。

欢迎任何想法/想法。

[解决了]

我最终使用了来自 rake 任务的 render_to_string中的示例,并进行了一些调整以在我的 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 实例变量,就像使用控制器一样。

然后我只需要将渲染的输出写入文件。

4

2 回答 2

0

对于这样的任务,您可以使用Rails 的内置缓存机制

还有另一个堆栈溢出帖子,它显示了一些示例代码,说明如何构建代码以从 rake 任务等手动写入缓存。

于 2012-06-01T17:51:08.637 回答
0

也许可以使用中间人jekyll ?

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

您必须稍微修改布局。

如果您愿意,您可能会找到 gem 来用其他东西替换 yaml。

于 2012-06-02T05:59:11.013 回答