I''m trying to make a worker that will render a large page to a file, very similar to what rails'' builtin cacheing does except with the rendering done outside of rails. The only advice I''ve found is to use ActionController::Integration::Session.new but this doesn''t seem to allow setting session variables the way the functional tests do. Is there a way to call a controller''s methods or render an rhtml template from a background worker? -Jacob
So i have not figured out any sane way to access controllers inside of
backgroundrb or other rails-working scripts but instead i''ve resorted
to
rendering my rhtml templates directly using the ERB module that rails
already includes from ruby standard lib.
There are a few limitations to using ERB in the raw:
- it doesn''t understand the trailing dash in <% -%> so you have
to strip
those.
- obviously it doesn''t know about any rails helper methods although i
think you might be able to explicitly include their classes.
- you have to pass it a binding to your namespace or else it won''t be
able to access any instance variables
Here''s an example that works from inside of a model class:
#load template into ERB object for rendering
erb = ERB.new( IO.read( rhtml_template_path ) )
#set instance variables for rendering
@report = self
@chart = @report.chart
# in order for the erb template to access the instance variables
# we must pass it a binding to this namespace
b = binding
#render template with instance variables
rendered_result = erb.result(b)
One upside to giving up all the rails framework help is that it runs a
bit faster and lighter.
-Jacob
Jacob Robbins wrote:> I''m trying to make a worker that will render a large page to a
file,
> very similar to what rails'' builtin cacheing does except with the
> rendering done outside of rails.
>
> The only advice I''ve found is to use
> ActionController::Integration::Session.new but this doesn''t seem
to
> allow setting session variables the way the functional tests do. Is
> there a way to call a controller''s methods or render an rhtml
template
> from a background worker?
>
> -Jacob
> _______________________________________________
> Backgroundrb-devel mailing list
> Backgroundrb-devel at rubyforge.org
> http://rubyforge.org/mailman/listinfo/backgroundrb-devel