Мы автоматически генерируем информационный бюллетень каждые 24 часа, используя рейк-задачу. В верхней части информационного бюллетеня есть раздел, в котором администратор может поместить индивидуальное сообщение. Экран, который использует администратор, имеет предварительный просмотр информационного бюллетеня в реальном времени (они настаивали на этом), отображаемый с использованием партиала haml, который принимает коллекцию.
Чтобы генерировать и отправлять электронные письма, мы отправляем XML-документы стороннему API, которые содержат (среди прочего) HTML для электронного письма, которое мы хотели бы сгенерировать.
Что я хочу сделать, так это сохранить вывод этого партиала 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>"
Я, вероятно, упустил что-то очевидное, и я мог бы придумать несколько способов сделать это, но большинство из них не СУХИЕ, и я не хочу генерировать много html в помощниках, моделях или самой задаче.
Дайте мне знать, если есть способ сделать это.