app()
click to toggle source
def app
@app ||= @launcher.config.app
end
before_restart()
click to toggle source
def before_restart
@control.stop(true) if @control
end
daemon?()
click to toggle source
def daemon?
@options[:daemon]
end
debug(str)
click to toggle source
def debug(str)
@events.log "- #{str}" if @options[:debug]
end
development?()
click to toggle source
def development?
@options[:environment] == "development"
end
error(str)
click to toggle source
def error(str)
@events.error str
end
load_and_bind()
click to toggle source
def load_and_bind
unless @launcher.config.app_configured?
error "No application configured, nothing to run"
exit 1
end
begin
@app = @launcher.config.app
rescue Exception => e
log "! Unable to load application: #{e.class}: #{e.message}"
raise e
end
@launcher.binder.parse @options[:binds], self
end
log(str)
click to toggle source
def log(str)
@events.log str
end
redirect_io()
click to toggle source
def redirect_io
stdout = @options[:redirect_stdout]
stderr = @options[:redirect_stderr]
append = @options[:redirect_append]
if stdout
STDOUT.reopen stdout, (append ? "a" : "w")
STDOUT.sync = true
STDOUT.puts "=== puma startup: #{Time.now} ==="
end
if stderr
STDERR.reopen stderr, (append ? "a" : "w")
STDERR.sync = true
STDERR.puts "=== puma startup: #{Time.now} ==="
end
end
redirected_io?()
click to toggle source
def redirected_io?
@options[:redirect_stdout] || @options[:redirect_stderr]
end
ruby_engine()
click to toggle source
def ruby_engine
if !defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby"
"ruby #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
else
if defined?(RUBY_ENGINE_VERSION)
"#{RUBY_ENGINE} #{RUBY_ENGINE_VERSION} - ruby #{RUBY_VERSION}"
else
"#{RUBY_ENGINE} #{RUBY_VERSION}"
end
end
end
start_control()
click to toggle source
def start_control
str = @options[:control_url]
return unless str
require 'puma/app/status'
uri = URI.parse str
app = Puma::App::Status.new @launcher
if token = @options[:control_auth_token]
app.auth_token = token unless token.empty? or token == :none
end
control = Puma::Server.new app, @launcher.events
control.min_threads = 0
control.max_threads = 1
case uri.scheme
when "tcp"
log "* Starting control server on #{str}"
control.add_tcp_listener uri.host, uri.port
when "unix"
log "* Starting control server on #{str}"
path = "#{uri.host}#{uri.path}"
mask = @options[:control_url_umask]
control.add_unix_listener path, mask
else
error "Invalid control URI: #{str}"
end
control.run
@control = control
end
start_server()
click to toggle source
def start_server
min_t = @options[:min_threads]
max_t = @options[:max_threads]
server = Puma::Server.new app, @launcher.events, @options
server.min_threads = min_t
server.max_threads = max_t
server.inherit_binder @launcher.binder
if @options[:mode] == :tcp
server.tcp_mode!
end
unless development?
server.leak_stack_on_error = false
end
server
end