lib/hanami/cli/commands/server.rb in hanami-1.3.5 vs lib/hanami/cli/commands/server.rb in hanami-2.0.0.alpha1
- old
+ new
@@ -1,36 +1,85 @@
+# frozen_string_literal: true
+
module Hanami
+ # Hanami CLI
+ #
+ # @since 1.1.0
class CLI
module Commands
# @since 1.1.0
# @api private
class Server < Command
- requires 'code_reloading'
-
desc "Start Hanami server (only for development)"
- option :server, desc: "Force a server engine (eg, webrick, puma, thin, etc..)"
- option :host, desc: "The host address to bind to"
- option :port, desc: "The port to run the server on", aliases: ["-p"]
- option :debug, desc: "Turn on debug output"
- option :warn, desc: "Turn on warnings"
- option :daemonize, desc: "Daemonize the server"
- option :pid, desc: "Path to write a pid file after daemonize"
- option :code_reloading, desc: "Code reloading", type: :boolean, default: true
+ option :server, desc: "Force a server engine (eg, webrick, puma, thin, etc..)"
+ option :host, desc: "The host address to bind to"
+ option :port, desc: "The port to run the server on", aliases: ["-p"]
+ option :debug, desc: "Turn on debug output", type: :boolean
+ option :warn, desc: "Turn on warnings", type: :boolean
+ option :daemonize, desc: "Daemonize the server", type: :boolean
+ option :pid, desc: "Path to write a pid file after daemonize"
example [
" # Basic usage (it uses the bundled server engine)",
"--server=webrick # Force `webrick` server engine",
"--host=0.0.0.0 # Bind to a host",
- "--port=2306 # Bind to a port",
- "--no-code-reloading # Disable code reloading"
+ "--port=2306 # Bind to a port"
]
# @since 1.1.0
# @api private
- def call(*)
+ def call(**args)
+ require "hanami"
+ require "hanami/container"
require "hanami/server"
- Hanami::Server.new.start
+
+ options = parse_arguments(args)
+ Hanami::Server.new(options).start
+ end
+
+ private
+
+ DEFAULT_CONFIG = "config.ru"
+ private_constant :DEFAULT_CONFIG
+
+ DEFAULT_HOST = "0.0.0.0"
+ private_constant :DEFAULT_HOST
+
+ DEFAULT_PORT = "2300"
+ private_constant :DEFAULT_PORT
+
+ OPTIONAL_SETTINGS = %i[
+ server
+ debug
+ warn
+ daemonize
+ pid
+ ].freeze
+
+ def parse_arguments(args)
+ Hanami::Container.start(:env)
+
+ {
+ config: DEFAULT_CONFIG,
+ Host: host(args),
+ Port: port(args),
+ AccessLog: []
+ }.merge(
+ args.slice(*OPTIONAL_SETTINGS)
+ )
+ end
+
+ def host(args)
+ args.fetch(:host) do
+ ENV.fetch("HANAMI_HOST", DEFAULT_HOST)
+ end
+ end
+
+ def port(args)
+ args.fetch(:port) do
+ ENV.fetch("HANAMI_PORT", DEFAULT_PORT)
+ end
end
end
end
register "server", Commands::Server, aliases: ["s"]