tracks/vendor/rails/railties/lib/commands/servers/lighttpd.rb
Luke Melia 901a58f8a3 Upgraded to Rails 2.1. This can have wide ranging consequences, so please help track down any issues introduced by the upgrade. Requires environment.rb modifications.
Changes you will need to make:

 * In your environment.rb, you will need to update references to a few files per environment.rb.tmpl
 * In your environment.rb, you will need to specify the local time zone of the computer that is running your Tracks install.

Other notes on my changes:

 * Modified our code to take advantage of Rails 2.1's slick time zone support.
 * Upgraded will_paginate for compatibility
 * Hacked the Selenium on Rails plugin, which has not been updated in some time and does not support Rails 2.1
 * Verified that all tests pass on my machine, including Selenium tests -- I'd like confirmation from others, too.
2008-06-17 01:13:25 -04:00

94 lines
2.8 KiB
Ruby

require 'rbconfig'
require 'commands/servers/base'
unless RUBY_PLATFORM !~ /mswin/ && !silence_stderr { `lighttpd -version` }.blank?
puts "PROBLEM: Lighttpd is not available on your system (or not in your path)"
exit 1
end
unless defined?(FCGI)
puts "PROBLEM: Lighttpd requires that the FCGI Ruby bindings are installed on the system"
exit 1
end
require 'initializer'
configuration = Rails::Initializer.run(:initialize_logger).configuration
default_config_file = config_file = Pathname.new("#{RAILS_ROOT}/config/lighttpd.conf").cleanpath
require 'optparse'
detach = false
command_line_port = nil
ARGV.options do |opt|
opt.on("-p", "--port=port", "Changes the server.port number in the config/lighttpd.conf") { |port| command_line_port = port }
opt.on('-c', "--config=#{config_file}", 'Specify a different lighttpd config file.') { |path| config_file = path }
opt.on('-h', '--help', 'Show this message.') { puts opt; exit 0 }
opt.on('-d', '-d', 'Call with -d to detach') { detach = true; puts "=> Configuration in config/lighttpd.conf" }
opt.parse!
end
unless File.exist?(config_file)
if config_file != default_config_file
puts "=> #{config_file} not found."
exit 1
end
require 'fileutils'
source = File.expand_path(File.join(File.dirname(__FILE__),
"..", "..", "..", "configs", "lighttpd.conf"))
puts "=> #{config_file} not found, copying from #{source}"
FileUtils.cp(source, config_file)
end
# open the config/lighttpd.conf file and add the current user defined port setting to it
if command_line_port
File.open(config_file, 'r+') do |config|
lines = config.readlines
lines.each do |line|
line.gsub!(/^\s*server.port\s*=\s*(\d+)/, "server.port = #{command_line_port}")
end
config.rewind
config.print(lines)
config.truncate(config.pos)
end
end
config = IO.read(config_file)
default_port, default_ip = 3000, '0.0.0.0'
port = config.scan(/^\s*server.port\s*=\s*(\d+)/).first rescue default_port
ip = config.scan(/^\s*server.bind\s*=\s*"([^"]+)"/).first rescue default_ip
puts "=> Rails #{Rails.version} application starting on http://#{ip || default_ip}:#{port || default_port}"
tail_thread = nil
if !detach
puts "=> Call with -d to detach"
puts "=> Ctrl-C to shutdown server (see config/lighttpd.conf for options)"
detach = false
tail_thread = tail(configuration.log_path)
end
trap(:INT) { exit }
begin
`rake tmp:sockets:clear` # Needed if lighttpd crashes or otherwise leaves FCGI sockets around
`lighttpd #{!detach ? "-D " : ""}-f #{config_file}`
ensure
unless detach
tail_thread.kill if tail_thread
puts 'Exiting'
# Ensure FCGI processes are reaped
silence_stream(STDOUT) do
ARGV.replace ['-a', 'kill']
require 'commands/process/reaper'
end
`rake tmp:sockets:clear` # Remove sockets on clean shutdown
end
end