Question

I have a sweeper that reheats cache by opening urls in forked processes. It's easy enough to hard-code the host for those urls, but I want it to change dynamically, based on environment.

I know I can set global/environmental variables for this, but I'd really like to use named routes. Is there any way to do this?

(I should clarify that I've tried just putting the named routes in there but they don't resolve at runtime.)

Was it helpful?

Solution

The closest I found is:

Rails.application.routes.named_routes.get(:user).defaults

Which retrieves:

{:action=>"show", :controller=>"users"}

But you should merge it with your params:

Rails.application.routes.named_routes.get(:user).defaults.merge({:id => 1})

Result:

{:action=>"show", :controller=>"users", :id=>1}

Edit:

Simply add

include Rails.application.routes.url_helpers 

to your class

OTHER TIPS

I fixed this in the current Rails 3.2 beta:

https://github.com/rails/rails/pull/3876

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top