Martin Gamsjaeger
2007-Feb-25 01:53 UTC
How can I use ActionPack to render rhtml OUTSIDE of a controller ?
Hi everyone, In my application (for producing pdf reports), I need to render some rhtml templates to html files on the disk, because I then push them through apache fop and css2xslfo to produce a neat (not so little) pdf out of my html+css combo, ready for print :). That said, the whole process of calculating the figures, rendering the html and then producing the pdf takes about 5min on my dev box, and still about 2min on my production server. Needless to say, I want this to run in a BackgrounDrb worker (thx for this wonderful plugin btw :) Since rendering the html file alone takes up almost 1 minute (intense db and svg image creation included), I need to put this call to ActionController#render in a background worker. As there is no way to access the controller in a backgroundrb worker (as far as i know), I am looking for a generic way to use ActionPack/View outside of a Rails controller. Currently I have a rather ugly approach, that lets me render my templates/partials from anywhere (from my model class atm) BUT, layouts don''t work, since they seem to be implemented in ActionController. My current code is as follows: def render(options, assigns = {}) ActionView::Base.class_eval do require ''rubygems'' require ''RMagick'' require ''scruffy'' require ''application'' include ApplicationHelper include Admin::AdminHelper include Admin::ReportsHelper include Admin::SurveyCalculationsHelper end viewer ActionView::Base.new(Rails::Configuration.new.view_path, assigns, Admin::SurveyCalculationsController.new) viewer.render options end As I said, ugly! With all those class_eval includes and requires, a call to the above render method, correctly renders my partial (along with local vars passed). However, my partials yield to different places in the layout, using content_for, so it''s not convenient to just wrap my partial code with what is now the layout file. Does anyone know how to do ActionController style render with layout/ partial/localvar support outside of a ActionController instance? Any help appreciated! Martin Gamsjaeger --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---