From 8b89bd779a1ddc78da63de295574b8519c3e94c8 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Fri, 23 Jun 2006 22:32:10 +0000 Subject: Mongrel support for script/server. Closes #5475. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4486 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- railties/lib/commands/server.rb | 17 +++++++----- railties/lib/commands/servers/mongrel.rb | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 railties/lib/commands/servers/mongrel.rb (limited to 'railties/lib/commands') diff --git a/railties/lib/commands/server.rb b/railties/lib/commands/server.rb index 0857a5756a..1a8d3fd29d 100644 --- a/railties/lib/commands/server.rb +++ b/railties/lib/commands/server.rb @@ -8,22 +8,25 @@ rescue Exception end server = case ARGV.first - when "lighttpd" - ARGV.shift - when "webrick" + when "lighttpd", "mongrel", "webrick" ARGV.shift else if RUBY_PLATFORM !~ /mswin/ && !silence_stderr { `lighttpd -version` }.blank? && defined?(FCGI) "lighttpd" + elsif !silence_stderr { `mongrel_rails -v` }.blank? + "mongrel" else "webrick" end end -if server == "webrick" - puts "=> Booting WEBrick..." -else - puts "=> Booting lighttpd (use 'script/server webrick' to force WEBrick)" +case server + when "webrick" + puts "=> Booting WEBrick..." + when "lighttpd" + puts "=> Booting lighttpd (use 'script/server webrick' to force WEBrick)" + when "mongrel" + puts "=> Booting Mongrel (use 'script/server webrick' to force WEBrick)" end ['sessions', 'cache', 'sockets'].each { |dir_to_make| FileUtils.mkdir_p(File.join(RAILS_ROOT, 'tmp', dir_to_make)) } diff --git a/railties/lib/commands/servers/mongrel.rb b/railties/lib/commands/servers/mongrel.rb new file mode 100644 index 0000000000..6d42316ba2 --- /dev/null +++ b/railties/lib/commands/servers/mongrel.rb @@ -0,0 +1,46 @@ +require 'rbconfig' + +unless RUBY_PLATFORM !~ /mswin/ && !silence_stderr { `mongrel_rails` }.blank? + puts "PROBLEM: Mongrel is not available on your system (or not in your path)" + exit 1 +end + +require 'optparse' + +detach = false +ip = nil +port = nil + +ARGV.options do |opt| + opt.on("-p", "--port=port", Integer, + "Runs Rails on the specified port.", + "Default: 3000") { |p| port = p } + opt.on("-b", "--binding=ip", String, + "Binds Rails to the specified ip.", + "Default: 0.0.0.0") { |i| ip = i } + opt.on('-h', '--help', 'Show this message.') { puts opt; exit 0 } + opt.on('-d', '-d', 'Call with -d to detach') { detach = true } + opt.parse! +end + +default_port, default_ip = 3000, '0.0.0.0' +puts "=> Rails application started on http://#{ip || default_ip}:#{port || default_port}" + +if !detach + puts "=> Call with -d to detach" + puts "=> Ctrl-C to shutdown server" + detach = false +end + +trap(:INT) { exit } + +tail_thread = nil + +begin + `mongrel_rails start #{detach ? "-d " : ""} -p #{port || default_port} -a #{ip || default_ip}` +ensure + unless detach + tail_thread.kill if tail_thread + puts 'Exiting' + end +end -- cgit v1.2.3