Using Rails URL helpers outside of views and controllers
In rails, all URLs are generated through URL helpers, be they named routes like
articles_url or explicit routes like
url_for(:controller=>'articles', :action => 'index').
Occasionally you’ll find yourself in the position to need to generate a URL outside of a controller or view.
First, it’s important to be sure that this isn’t being done to circumvent MVC, and to try and find a way to do this in a view.
I encountered this recently when making a sitemap generation script.
The key is to include
ActionController::UrlWriter for Rails 2, or Rails.application.routes.url_helpers for Rails 3 in the class you would like to use, which will bring the
*_path helpers into that class.
The one gotcha to this is that URL methods with the full will fail unless
:host is specified in the arguments. This could be solved by setting the
@@default_url_options class attribute.