diff --git a/src/kemal.cr b/src/kemal.cr index 90f2078..08d7226 100644 --- a/src/kemal.cr +++ b/src/kemal.cr @@ -30,7 +30,7 @@ module Kemal unless config.env == "test" Signal::INT.trap { log "Kemal is going to take a rest!\n" - config.server.close + Kemal.stop exit } @@ -46,7 +46,22 @@ module Kemal end log "[#{config.env}] Kemal is ready to lead at #{config.scheme}://#{config.host_binding}:#{config.port}\n" + config.running = true + pp config.running config.server.listen end end + + def self.stop + if config.running + if config.server + config.server.close + config.running = false + else + raise "config.server is not set. Please use Kemal.run to set the server." + end + else + raise "Kemal is already stopped." + end + end end diff --git a/src/kemal/config.cr b/src/kemal/config.cr index 825298e..79a398b 100644 --- a/src/kemal/config.cr +++ b/src/kemal/config.cr @@ -14,7 +14,7 @@ module Kemal @ssl : OpenSSL::SSL::Context::Server? {% end %} - property host_binding, ssl, port, env, public_folder, logging, + property host_binding, ssl, port, env, public_folder, logging, running, always_rescue, serve_static : (Bool | Hash(String, Bool)), server, session : Hash(String, Time::Span | String), extra_options def initialize @@ -32,6 +32,7 @@ module Kemal @router_included = false @custom_handler_position = 4 @default_handlers_setup = false + @running = false end def logger