class SequenceServer::Server
Simple wrapper around WEBrick and Rack::Handler::WEBrick to host SequenceServer
standalone.
Attributes
app[R]
Public Class Methods
new(app)
click to toggle source
# File lib/sequenceserver/server.rb, line 13 def initialize(app) @app = app end
run(*args)
click to toggle source
# File lib/sequenceserver/server.rb, line 8 def run(*args) new(*args).start end
Public Instance Methods
options()
click to toggle source
Options Hash
passed to WEBrick::HTTPServer. rubocop:disable Metrics/AbcSize
# File lib/sequenceserver/server.rb, line 36 def options @options ||= { BindAddress: app.config[:host], Port: app.config[:port], StartCallback: proc { app.on_start }, StopCallback: proc { app.on_stop }, OutputBufferSize: 5, AccessLog: [[logdev, WEBrick::AccessLog::COMMON_LOG_FORMAT]], Logger: WEBrick::Log.new(logdev) } end
start()
click to toggle source
Start server. Raises Errno::EADDRINUSE if port is in use by another process. Raises Errno::EACCES if binding to the port requires root privilege.
# File lib/sequenceserver/server.rb, line 22 def start setup_signal_handlers @server = WEBrick::HTTPServer.new(options) @server.mount '/', Rackup::Handler::WEBrick, app @server.start end
stop()
click to toggle source
Stop server.
# File lib/sequenceserver/server.rb, line 30 def stop @server.shutdown end
Private Instance Methods
logdev()
click to toggle source
# File lib/sequenceserver/server.rb, line 59 def logdev @logdev ||= app.verbose? ? STDERR : '/dev/null' end
setup_signal_handlers()
click to toggle source
rubocop:enable Metrics/AbcSize
# File lib/sequenceserver/server.rb, line 51 def setup_signal_handlers %i[INT TERM].each do |sig| trap sig do stop end end end