From 3755b56cb6802421d52d70dfff8deaa3f42ec1f4 Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Thu, 22 Feb 2024 06:15:25 +0400 Subject: [PATCH] Rename class Diversipub::PumaTask to Diversipub::Tasks::HTTP --- lib/diversipub.rb | 3 +- lib/diversipub/main.rb | 15 +++++--- lib/diversipub/puma_task.rb | 70 ----------------------------------- lib/diversipub/tasks/http.rb | 72 ++++++++++++++++++++++++++++++++++++ 4 files changed, 83 insertions(+), 77 deletions(-) delete mode 100644 lib/diversipub/puma_task.rb create mode 100644 lib/diversipub/tasks/http.rb diff --git a/lib/diversipub.rb b/lib/diversipub.rb index 86e96e8..031520d 100644 --- a/lib/diversipub.rb +++ b/lib/diversipub.rb @@ -12,10 +12,11 @@ require 'rack/handler/puma' require 'rack/protection' require_relative 'diversipub/main' -require_relative 'diversipub/puma_task' require_relative 'diversipub/rack_app' require_relative 'diversipub/version' +require_relative 'diversipub/tasks/http' + ## # A publishing platform for HTTP, Gemini, ActivityPub, RSS, Atom, and others. # diff --git a/lib/diversipub/main.rb b/lib/diversipub/main.rb index a593ff5..f3c505a 100644 --- a/lib/diversipub/main.rb +++ b/lib/diversipub/main.rb @@ -29,8 +29,7 @@ module Diversipub def run debug_output - - puma_task.join_thread + tasks.each(&:join_thread) true end @@ -46,12 +45,12 @@ module Diversipub end def stop_gracefully - puma_task.stop_gracefully + tasks.each(&:stop_gracefully) nil end def stop_urgently - puma_task.stop_urgently + tasks.each(&:stop_urgently) nil end @@ -94,8 +93,12 @@ module Diversipub end end - def puma_task - @puma_task ||= PumaTask.new self + def tasks + @tasks ||= [http_task].freeze + end + + def http_task + @http_task ||= Tasks::HTTP.new self end end end diff --git a/lib/diversipub/puma_task.rb b/lib/diversipub/puma_task.rb deleted file mode 100644 index 06e1b14..0000000 --- a/lib/diversipub/puma_task.rb +++ /dev/null @@ -1,70 +0,0 @@ -# frozen_string_literal: true - -module Diversipub - ## - # Puma web server task runner. - # - class PumaTask - def initialize(main) - @main = main - end - - def join_thread - thread.join - nil - end - - def stop_gracefully - puma.stop - nil - end - - alias stop_urgently stop_gracefully - - private - - def thread - @thread ||= Thread.start { puma.run } - end - - def puma - @puma ||= Puma::Launcher.new( - puma_config, - log_writer: puma_log_writer, - ) - end - - def puma_config - @puma_config ||= Puma::Configuration.new puma_options.dup - end - - def puma_options - @puma_options ||= { - app: rack_app, - binds: ['tcp://127.0.0.1:9292'].freeze, - environment: 'production', - log_requests: true, - logger: puma_logger, - rackup: nil, - tag: 'diversipub', - tcp_host: '127.0.0.1', - tcp_port: 9292, - workers: 0, - }.freeze - end - - def puma_log_writer - @puma_log_writer ||= Puma::LogWriter.new @main.stderr, @main.stderr - end - - def puma_logger - @puma_logger ||= Logger.new(@main.stderr).tap do |puma_logger| - puma_logger.level = Logger::DEBUG - end - end - - def rack_app - @rack_app ||= RackApp.new @main - end - end -end diff --git a/lib/diversipub/tasks/http.rb b/lib/diversipub/tasks/http.rb new file mode 100644 index 0000000..1fdb667 --- /dev/null +++ b/lib/diversipub/tasks/http.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +module Diversipub + module Tasks + ## + # HTTP server task runner. + # + class HTTP + def initialize(main) + @main = main + end + + def join_thread + thread.join + nil + end + + def stop_gracefully + puma.stop + nil + end + + alias stop_urgently stop_gracefully + + private + + def thread + @thread ||= Thread.start { puma.run } + end + + def puma + @puma ||= Puma::Launcher.new( + puma_config, + log_writer: puma_log_writer, + ) + end + + def puma_config + @puma_config ||= Puma::Configuration.new puma_options.dup + end + + def puma_options + @puma_options ||= { + app: rack_app, + binds: ['tcp://127.0.0.1:9292'].freeze, + environment: 'production', + log_requests: true, + logger: puma_logger, + rackup: nil, + tag: 'diversipub', + tcp_host: '127.0.0.1', + tcp_port: 9292, + workers: 0, + }.freeze + end + + def puma_log_writer + @puma_log_writer ||= Puma::LogWriter.new @main.stderr, @main.stderr + end + + def puma_logger + @puma_logger ||= Logger.new(@main.stderr).tap do |puma_logger| + puma_logger.level = Logger::DEBUG + end + end + + def rack_app + @rack_app ||= RackApp.new @main + end + end + end +end