diff options
Diffstat (limited to 'bin/unicorn_rails')
-rwxr-xr-x | bin/unicorn_rails | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/bin/unicorn_rails b/bin/unicorn_rails index 37ee027..72ab288 100755 --- a/bin/unicorn_rails +++ b/bin/unicorn_rails @@ -5,8 +5,7 @@ require 'optparse' require 'fileutils' daemonize = false -listeners = [] -options = { :listeners => listeners } +options = { :listeners => [] } host, port = Unicorn::Const::DEFAULT_HOST, Unicorn::Const::DEFAULT_PORT set_listener = false ENV['RAILS_ENV'] ||= "development" @@ -70,7 +69,7 @@ opts = OptionParser.new("", 24, ' ') do |opts| "listen on HOST:PORT or PATH", "this may be specified multiple times", "(default: #{Unicorn::Const::DEFAULT_LISTEN})") do |address| - listeners << address + options[:listeners] << address end opts.on("-c", "--config-file FILE", "Unicorn-specific config file") do |f| @@ -108,14 +107,14 @@ opts = OptionParser.new("", 24, ' ') do |opts| opts.parse! ARGV end -config = ARGV[0] || (File.exist?('config.ru') ? 'config.ru' : nil) +ru = ARGV[0] || (File.exist?('config.ru') ? 'config.ru' : nil) -if config && config =~ /\.ru\z/ +if ru && ru =~ /\.ru\z/ # parse embedded command-line options in config.ru comments - /^#\\(.*)/ =~ File.read(config) and opts.parse!($1.split(/\s+/)) + /^#\\(.*)/ =~ File.read(ru) and opts.parse!($1.split(/\s+/)) end -def rails_builder(config, daemonize) +def rails_builder(ru, daemonize) # this lambda won't run until after forking if preload_app is false lambda do || # Load Rails and (possibly) the private version of Rack it bundles. @@ -125,7 +124,7 @@ def rails_builder(config, daemonize) abort "#$0 must be run inside RAILS_ROOT: #{err.inspect}" end - inner_app = case config + inner_app = case ru when nil require 'config/environment' @@ -146,12 +145,12 @@ def rails_builder(config, daemonize) ActionController::Dispatcher.new end when /\.ru$/ - raw = File.open(config, "rb") { |fp| fp.sysread(fp.stat.size) } + raw = File.read(ru) raw.sub!(/^__END__\n.*/, '') - eval("Rack::Builder.new {(#{raw}\n)}.to_app", nil, config) + eval("Rack::Builder.new {(#{raw}\n)}.to_app", TOPLEVEL_BINDING, ru) else - require config - Object.const_get(File.basename(config, '.rb').capitalize) + require ru + Object.const_get(File.basename(ru, '.rb').capitalize) end Rack::Builder.new do @@ -180,8 +179,8 @@ def rails_builder(config, daemonize) end end -app = rails_builder(config, daemonize) -listeners << "#{host}:#{port}" if set_listener +app = rails_builder(ru, daemonize) +options[:listeners] << "#{host}:#{port}" if set_listener if $DEBUG require 'pp' |