Allow config.server to be lazily initiliazed. Fixes #396
This commit is contained in:
parent
61caa077b7
commit
ad692357d4
2 changed files with 10 additions and 10 deletions
15
src/kemal.cr
15
src/kemal.cr
|
@ -32,11 +32,6 @@ module Kemal
|
||||||
config.setup
|
config.setup
|
||||||
config.port = port if port
|
config.port = port if port
|
||||||
|
|
||||||
config.server = HTTP::Server.new(config.host_binding, config.port, config.handlers)
|
|
||||||
{% if !flag?(:without_openssl) %}
|
|
||||||
config.server.tls = config.ssl
|
|
||||||
{% end %}
|
|
||||||
|
|
||||||
unless Kemal.config.error_handlers.has_key?(404)
|
unless Kemal.config.error_handlers.has_key?(404)
|
||||||
error 404 do |env|
|
error 404 do |env|
|
||||||
render_404
|
render_404
|
||||||
|
@ -63,15 +58,21 @@ module Kemal
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
server = HTTP::Server.new(config.host_binding, config.port, config.handlers)
|
||||||
|
{% if !flag?(:without_openssl) %}
|
||||||
|
server.tls = config.ssl
|
||||||
|
{% end %}
|
||||||
|
config.server ||= server
|
||||||
config.running = true
|
config.running = true
|
||||||
|
|
||||||
yield config
|
yield config
|
||||||
config.server.listen if config.env != "test"
|
config.server.not_nil!.listen if config.env != "test" && config.server
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.stop
|
def self.stop
|
||||||
if config.running
|
if config.running
|
||||||
if config.server
|
if config.server
|
||||||
config.server.close
|
config.server.not_nil!.close
|
||||||
config.running = false
|
config.running = false
|
||||||
else
|
else
|
||||||
raise "Kemal.config.server is not set. Please use Kemal.run to set the server."
|
raise "Kemal.config.server is not set. Please use Kemal.run to set the server."
|
||||||
|
|
|
@ -20,7 +20,7 @@ module Kemal
|
||||||
|
|
||||||
getter custom_handler_position
|
getter custom_handler_position
|
||||||
property host_binding, ssl, port, env, public_folder, logging, running
|
property host_binding, ssl, port, env, public_folder, logging, running
|
||||||
property always_rescue, server, extra_options, shutdown_message
|
property always_rescue, server : HTTP::Server?, extra_options, shutdown_message
|
||||||
property serve_static : (Bool | Hash(String, Bool))
|
property serve_static : (Bool | Hash(String, Bool))
|
||||||
property static_headers : (HTTP::Server::Response, String, File::Stat -> Void)?
|
property static_headers : (HTTP::Server::Response, String, File::Stat -> Void)?
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@ module Kemal
|
||||||
@logger = nil
|
@logger = nil
|
||||||
@error_handler = nil
|
@error_handler = nil
|
||||||
@always_rescue = true
|
@always_rescue = true
|
||||||
@server = uninitialized HTTP::Server
|
|
||||||
@router_included = false
|
@router_included = false
|
||||||
@default_handlers_setup = false
|
@default_handlers_setup = false
|
||||||
@running = false
|
@running = false
|
||||||
|
|
Loading…
Reference in a new issue