Index: projects/mongrel_service/lib/mongrel_service/init.rb =================================================================== --- projects/mongrel_service/lib/mongrel_service/init.rb (revision 298) +++ projects/mongrel_service/lib/mongrel_service/init.rb (working copy) @@ -26,7 +26,8 @@ ['-B', '--debug', "Enable debugging mode", :@debug, false], ['-C', '--config PATH', "Use a config file", :@config_file, nil], ['-S', '--script PATH', "Load the given file as an extra config script.", :@config_script, nil], - ['-u', '--cpu CPU', "Bind the process to specific cpu, starting from 1.", :@cpu, nil] + ['-u', '--cpu CPU', "Bind the process to specific cpu, starting from 1.", :@cpu, nil], + ['', '--prefix PATH', "URL prefix for Rails app", :@prefix, nil] ] end @@ -51,6 +52,7 @@ valid? app_exist == true, "The path you specified isn't a valid Rails application." + valid? @prefix[-1].chr != "/", "Don't put / at the end of your prefix" if @prefix valid_dir? File.dirname(@log_file), "Path to log file not valid: #@log_file" valid_dir? File.dirname(@pid_file), "Path to pid file not valid: #@pid_file" valid_dir? @docroot, "Path to docroot not valid: #@docroot" @@ -80,13 +82,13 @@ :log_file => @log_file, :pid_file => @pid_file, :environment => @environment, :docroot => @docroot, :mime_map => @mime_map, :debug => @debug, :includes => ["mongrel"], :config_script => @config_script, - :num_procs => @num_procs, :timeout => @timeout, :cpu => @cpu + :num_procs => @num_procs, :timeout => @timeout, :cpu => @cpu, :prefix => @prefix } if @config_file STDERR.puts "** Loading settings from #{@config_file} (command line options override)." conf = YAML.load_file(@config_file) - @options = conf.merge(@options) + @options = @options.merge! conf end argv = [] @@ -111,6 +113,7 @@ argv << "-B" if @options[:debug] argv << "-S \"#{@options[:config_script]}\"" if @options[:config_script] argv << "-u #{@options[:cpu.to_i]}" if @options[:cpu] + argv << "--prefix \"#{@options[:prefix]}\"" if @options[:prefix] svc = Win32::Service.new begin @@ -217,4 +220,4 @@ end end end -end \ No newline at end of file +end Index: projects/mongrel_service/bin/mongrel_service =================================================================== --- projects/mongrel_service/bin/mongrel_service (revision 298) +++ projects/mongrel_service/bin/mongrel_service (working copy) @@ -65,11 +65,12 @@ end log "Starting Rails in environment #{defaults[:environment]} ..." - uri "/", :handler => rails(:mime => mime) + log "Mounting Rails at #{defaults[:prefix]}..." if defaults[:prefix] + uri defaults[:prefix] || "/", :handler => rails(:mime => mime, :prefix => defaults[:prefix]) log "Rails loaded." - #log "Loading any Rails specific GemPlugins" - #load_plugins + log "Loading any Rails specific GemPlugins" + load_plugins if defaults[:config_script] log "Loading #{defaults[:config_script]} external config script" @@ -108,7 +109,8 @@ :debug => false, :config_file => nil, :config_script => nil, - :cpu => nil + :cpu => nil, + :prefix => nil } ARGV.options do |opts| @@ -126,6 +128,7 @@ opts.on('-C', '--config FILE', "Use a config file") { |OPTIONS[:config_file]| } opts.on('-S', '--script FILE', "Load the given file as an extra config script.") { |OPTIONS[:config_script]| } opts.on('-u', '--cpu CPU', "Bind the process to specific cpu, starting from 1.") { |OPTIONS[:cpu]| } + opts.on('--prefix PATH', "URL prefix for Rails app") { |OPTIONS[:prefix]| } opts.parse! end