use trap_signal in run

This commit is contained in:
Alexey Vasiliev 2022-07-15 15:36:15 +03:00
parent 88807b90c6
commit db87d82709
No known key found for this signature in database
GPG key ID: 73BC1D843B7DCE42
3 changed files with 8 additions and 20 deletions

View file

@ -40,14 +40,6 @@ describe "Config" do
config.shutdown_message.should eq true
end
it "toggles the disable trap signal" do
config = Kemal.config
config.disable_trap_signal = false
config.disable_trap_signal.should eq false
config.disable_trap_signal = true
config.disable_trap_signal.should eq true
end
it "adds custom options" do
config = Kemal.config
ARGV.push("--test")

View file

@ -7,18 +7,18 @@ require "./kemal/helpers/*"
module Kemal
# Overload of `self.run` with the default startup logging.
def self.run(port : Int32?, args = ARGV)
self.run(port, args) { }
def self.run(port : Int32?, args = ARGV, trap_signal : Bool = true)
self.run(port, args, trap_signal) { }
end
# Overload of `self.run` without port.
def self.run(args = ARGV)
self.run(nil, args: args)
def self.run(args = ARGV, trap_signal : Bool = true)
self.run(nil, args: args, trap_signal: trap_signal)
end
# Overload of `self.run` to allow just a block.
def self.run(args = ARGV, &block)
self.run(nil, args: args, &block)
self.run(nil, args: args, trap_signal: true, &block)
end
# The command to run a `Kemal` application.
@ -27,7 +27,7 @@ module Kemal
#
# To use custom command line arguments, set args to nil
#
def self.run(port : Int32? = nil, args = ARGV, &block)
def self.run(port : Int32? = nil, args = ARGV, trap_signal : Bool = true, &block)
Kemal::CLI.new args
config = Kemal.config
config.setup
@ -36,7 +36,7 @@ module Kemal
# Test environment doesn't need to have signal trap and logging.
if config.env != "test"
setup_404
setup_trap_signal
setup_trap_signal if trap_signal
end
server = config.server ||= HTTP::Server.new(config.handlers)
@ -89,8 +89,6 @@ module Kemal
end
private def self.setup_trap_signal
return if Kemal.config.disable_trap_signal
Signal::INT.trap do
log "#{Kemal.config.app_name} is going to take a rest!" if Kemal.config.shutdown_message
Kemal.stop

View file

@ -21,7 +21,7 @@ module Kemal
{% end %}
property host_binding, ssl, port, env, public_folder, logging, running
property always_rescue, server : HTTP::Server?, extra_options, shutdown_message, disable_trap_signal
property always_rescue, server : HTTP::Server?, extra_options, shutdown_message
property serve_static : (Bool | Hash(String, Bool))
property static_headers : (HTTP::Server::Response, String, File::Info -> Void)?
property powered_by_header : Bool = true, app_name
@ -41,7 +41,6 @@ module Kemal
@default_handlers_setup = false
@running = false
@shutdown_message = true
@disable_trap_signal = false
@handler_position = 0
end
@ -62,7 +61,6 @@ module Kemal
@router_included = false
@handler_position = 0
@default_handlers_setup = false
@disable_trap_signal = false
HANDLERS.clear
CUSTOM_HANDLERS.clear
FILTER_HANDLERS.clear