レーキ タスクを使用して、24 時間ごとにニュースレターを自動的に生成しています。ニュースレターの上部に、管理者がカスタマイズしたメッセージを入力できるセクションがあります。管理者が使用する画面には、コレクションを取得する haml パーシャルを使用してレンダリングされた、ニュースレターのライブ プレビューがあります (彼らはこれに固執していました)。
電子メールを生成して送信するために、生成したい電子メールの HTML を (とりわけ) 含むサードパーティ API に xml ドキュメントを送信しています。
私がやりたいのは、この haml パーシャルの出力を rake タスク内に保存することです。これは、PHP の ob_*() バッファリング関数に似ています。次のようなことをする方法はありますか?
ob_start();
render :partial => newsletter, :collection => posts
newsletter_html = ob_get_contents()
xml = "
<Creative>
<Name>Our Newsletter -- #{Time.now.strftime('%m/%d/%Y')}</Name>
<HTML><html><body>#{newsletter_html}</body></html></HTML>
...
</Creative>"
おそらく明らかな何かが欠けているので、これを行ういくつかの方法を考えることができますが、それらのほとんどは DRY ではなく、ヘルパー、モデル、またはタスク自体で大量の html を生成したくありません。
これを達成する方法があれば教えてください。