Building a Root Route with a Generator

I'm looking for a better approach... then what I'm currently doing.

I'm working on a generator that will help me setup my base projects with many of my common defaults that I use internally. Now I know that generators have the route_resources method that allows a person to create a resource in the routes file, but is there a way to create the map.root :controller => 'name' entry as well?

Here is what I've done. I customized the route_resources method to be something like this:

    def add_root_route       sentinel = 'ActionController::Routing::Routes.draw do |map|'       gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|         "#{match}\n map.root :controller => \"welcome\"\n"       end     end

And then just copied the gsub_file method to my generator (it was a protected method and I couldn't think of another way to execute it - thoughts?).

I then have a bit that does:

      action = File.basename($0)       case action         when "generate"           add_root_route         when "destroy"           puts "------------------------------------------------------------"           puts "Make sure you remove the map.root from the /config/ routes.rb"           puts "------------------------------------------------------------"       end

Which makes sure it only runs when they are running generate.

My question is this... Is there an better way to be doing this? It seems like a lot of insanity just to add a root route.

You would think so, but there doesn't seem to be. `script/generate resource` also adds routes, but looking at the source, they're doing something similar:

        def route_resources(*resources)           resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')           sentinel = 'ActionController::Routing::Routes.draw do |map|'

          logger.route "map.resources #{resource_list}"           unless options[:pretend]             gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|               "#{match}\n map.resources #{resource_list}\n"             end           end         end

Brandon

Okay cool. Is there a better way to call gsub_file protected method then by copying it into the generator? It's in Rails::Generator::Commands::Base.