ruby-on-railsrouteshostsweeper

How can I access named routes in a Rails sweeper?


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


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