2012-06-01 43 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的寶石。

相關問題