Method: Unicorn::HttpServer#start

Defined in:
lib/unicorn/http_server.rb

#startObject

Runs the thing. Returns self so you can run join on it



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/unicorn/http_server.rb', line 121

def start
  inherit_listeners!
  # this pipe is used to wake us up from select(2) in #join when signals
  # are trapped.  See trap_deferred.
  @self_pipe.replace(Unicorn.pipe)
  @master_pid = @worker_data ? Process.ppid : $$

  # setup signal handlers before writing pid file in case people get
  # trigger happy and send signals as soon as the pid file exists.
  # Note that signals don't actually get handled until the #join method
  @queue_sigs.each { |sig| trap(sig) { @sig_queue << sig; awaken_master } }
  trap(:CHLD) { awaken_master }

  # write pid early for Mongrel compatibility if we're not inheriting sockets
  # This is needed for compatibility some Monit setups at least.
  # This unfortunately has the side effect of clobbering valid PID if
  # we upgrade and the upgrade breaks during preload_app==true && build_app!
  self.pid = config[:pid]

  build_app! if preload_app
  bind_new_listeners!

  spawn_missing_workers
  self
end