Using controller methods in rake tasks

I am writing a rails task that needs to call a controller method. Does
anyone know how I can do this?

Thanks

I am writing a rails task that needs to call a controller method.
Does
anyone know how I can do this?

Not easily. You're better off pushing the code you need into a model
or something

Fred

I am not quite sure how it would work with rake tasks, but when I want a plain old ruby script to do work with models (never tried with controllers) I load the rails environment using (assuming that the folder the script resides in the script folder)

require File.dirname(FILE) + ‘/…/config/environment’

I was thinking that too since is really an instance method in my
application. It worked except for one part, I am using render_to_string
in my controller and I could not figure out how to use that method in my
model. Is this the job for a helper?

Thanks

Frederick Cheung wrote:

Ok, I got it working. I moved the method to the model and after some
looking around, found out how to render from a model.

I used:

av = ActionView::Base.new(Rails::Configuration.new.view_path)
product_description = av.render(:partial =>
'admin/product/prod_template'...

I passed some locals to the partial, changed the variables in the view
and everything appears to work.

Of note: you must give the complete relative path of the template in the
render call or you get the cryptic error:

"undefined method `controller_path' for NilClass:Class" instead of the
normal "no delegate template"

e.g. the template above was located at
"app/views/admin/product/_prod_template.rhtml"

Hopefully this will help someone else.