--- /dev/null
+require 'active_support'
+require 'fileutils'
+
+begin
+ require_library_or_gem 'fcgi'
+rescue Exception
+ # FCGI not available
+end
+
+begin
+ require_library_or_gem 'mongrel'
+rescue Exception
+ # Mongrel not available
+end
+
+begin
+ require_library_or_gem 'thin'
+rescue Exception
+ # Thin not available
+end
+
+server = case ARGV.first
+ when "lighttpd", "mongrel", "new_mongrel", "webrick", "thin"
+ ARGV.shift
+ else
+ if defined?(Mongrel)
+ "mongrel"
+ elsif defined?(Thin)
+ "thin"
+ elsif RUBY_PLATFORM !~ /(:?mswin|mingw)/ && !silence_stderr { `lighttpd -version` }.blank? && defined?(FCGI)
+ "lighttpd"
+ else
+ "webrick"
+ end
+end
+
+case server
+ when "webrick"
+ puts "=> Booting WEBrick..."
+ when "lighttpd"
+ puts "=> Booting lighttpd (use 'script/server webrick' to force WEBrick)"
+ when "mongrel", "new_mongrel"
+ puts "=> Booting Mongrel (use 'script/server webrick' to force WEBrick)"
+ when "thin"
+ puts "=> Booting Thin (use 'script/server webrick' to force WEBrick)"
+end
+
+%w(cache pids sessions sockets).each { |dir_to_make| FileUtils.mkdir_p(File.join(RAILS_ROOT, 'tmp', dir_to_make)) }
+require "commands/servers/#{server}"