Skip to content

Instantly share code, notes, and snippets.

@rajib
Created August 10, 2010 11:22
Show Gist options
  • Save rajib/517103 to your computer and use it in GitHub Desktop.
Save rajib/517103 to your computer and use it in GitHub Desktop.
namespace :save do
desc "it will create/generate route urls"
task :route_urls => :environment do
all_routes = ENV['CONTROLLER'] ? ActionController::Routing::Routes.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : ActionController::Routing::Routes.routes
routes = all_routes.collect do |route|
name = ActionController::Routing::Routes.named_routes.routes.index(route)
verb = route.conditions[:method]
segs = route.segments.inject("") { |str,s| str << s.to_s }
segs.chop! if segs.length > 1
reqs = route.requirements.empty? ? "" : route.requirements
{:name => name, :verb => verb, :segs => segs, :reqs => reqs}
end
routes.each do |r|
Admin::RouteUrl.find_or_create_by_action_and_controller_and_path(:action => r[:reqs][:action],
:controller => r[:reqs][:controller],
:url => r[:segs].gsub('(.:format)', ''),
:method => r[:verb].to_s,
:path => r[:name].to_s)
puts "Saving url path for :controller => #{r[:reqs][:controller]}, :action => #{r[:reqs][:action]}"
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment