2

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.)

glortho
  • 13,120
  • 8
  • 49
  • 45

2 Answers2

4

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

apneadiving
  • 114,565
  • 26
  • 219
  • 213
  • Thanks, that could be useful in other contexts, but for this one I really need the protocol, host, port, etc. – glortho May 19 '11 at 23:26
0

I fixed this in the current Rails 3.2 beta:

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

tvdeyen
  • 723
  • 4
  • 9