about summary refs log tree commit homepage
path: root/bin/unicorn_rails
diff options
context:
space:
mode:
Diffstat (limited to 'bin/unicorn_rails')
-rwxr-xr-xbin/unicorn_rails27
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'