私の Rails アプリは、1 日に 1 回一連の xml フィードを取得し、それらをデータベースにロードしてから、それらを集約して表示します。ページを静的ファイルとして出力し、フロントエンド サーバー (私の場合は nginx) によって直接提供されるようにすれば、サーバー メモリを節約できると考えています。IRC ルームで尋ねたところ、レールを使用せず、rake タスクを使用してファイルを作成するように言われました。しかし、これを行うための最も簡単な方法は何だろうと思っています。レイアウト、アセット ファイル、およびコンテンツは明らかにレール内の別の場所にあるため、レイアウトとコンテンツを結合してから 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 インスタンス変数を使用できるようになります。
次に、レンダリングの出力をファイルに書き込むだけです。