From f8e5d851a93e1e8e912ce8fc0e4a872a46cf8b2d Mon Sep 17 00:00:00 2001 From: "Marcos G. Zimmermann" Date: Wed, 22 Jan 2025 23:37:15 -0300 Subject: [PATCH] disable lifecycle hooks --- lib/lepus.rb | 3 ++ lib/lepus/consumer.rb | 4 +- lib/lepus/lifecycle_hooks.rb | 78 ++++++++++++++-------------- lib/lepus/processes/consumer.rb | 3 +- lib/lepus/processes/interruptible.rb | 2 + lib/lepus/supervisor.rb | 8 +-- 6 files changed, 52 insertions(+), 46 deletions(-) diff --git a/lib/lepus.rb b/lib/lepus.rb index 2afe342..3e48d33 100644 --- a/lib/lepus.rb +++ b/lib/lepus.rb @@ -47,6 +47,9 @@ def initialize(value) class InvalidConsumerConfigError < Error end + class ShutdownError < Error + end + module Processes class ProcessMissingError < RuntimeError def initialize diff --git a/lib/lepus/consumer.rb b/lib/lepus/consumer.rb index 40521e8..4aa2d7d 100644 --- a/lib/lepus/consumer.rb +++ b/lib/lepus/consumer.rb @@ -25,7 +25,7 @@ def config return if @abstract_class == true return @config if defined?(@config) - name = name.split("::").last.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase + name = Primitive::String.new(self).underscore.split("/").last @config = ConsumerConfig.new(queue: name, exchange: name) end @@ -43,7 +43,7 @@ def use(middleware, opts = {}) if middleware.is_a?(Symbol) || middleware.is_a?(String) begin require_relative "middlewares/#{middleware}" - class_name = middleware.to_s.split("_").map(&:capitalize).join + class_name = Primitive::String.new(middleware).classify class_name = "JSON" if class_name == "Json" middleware = Lepus::Middlewares.const_get(class_name) rescue LoadError, NameError diff --git a/lib/lepus/lifecycle_hooks.rb b/lib/lepus/lifecycle_hooks.rb index 97ba94a..a115fec 100644 --- a/lib/lepus/lifecycle_hooks.rb +++ b/lib/lepus/lifecycle_hooks.rb @@ -3,46 +3,46 @@ module Lepus module LifecycleHooks def self.included(base) - base.extend ClassMethods - base.send :include, InstanceMethods - base.instance_variable_set(:@lifecycle_hooks, {start: [], stop: []}) + # base.extend ClassMethods + # base.send :include, InstanceMethods + # base.instance_variable_set(:@lifecycle_hooks, {start: [], stop: []}) end - module ClassMethods - attr_reader :lifecycle_hooks - - def on_start(&block) - lifecycle_hooks[:start] << block - end - - def on_stop(&block) - lifecycle_hooks[:stop] << block - end - - def clear_hooks - lifecycle_hooks[:start] = [] - lifecycle_hooks[:stop] = [] - end - end - - module InstanceMethods - private - - def run_start_hooks - run_hooks_for :start - end - - def run_stop_hooks - run_hooks_for :stop - end - - def run_hooks_for(event) - self.class.lifecycle_hooks.fetch(event, []).each do |block| - block.call - rescue Exception => exception # rubocop:disable Lint/RescueException - handle_thread_error(exception) - end - end - end + # module ClassMethods + # attr_reader :lifecycle_hooks + + # def on_start(&block) + # lifecycle_hooks[:start] << block + # end + + # def on_stop(&block) + # lifecycle_hooks[:stop] << block + # end + + # def clear_hooks + # lifecycle_hooks[:start] = [] + # lifecycle_hooks[:stop] = [] + # end + # end + + # module InstanceMethods + # private + + # def run_start_hooks + # run_hooks_for :start + # end + + # def run_stop_hooks + # run_hooks_for :stop + # end + + # def run_hooks_for(event) + # self.class.lifecycle_hooks.fetch(event, []).each do |block| + # block.call + # rescue Exception => exception # rubocop:disable Lint/RescueException + # handle_thread_error(exception) + # end + # end + # end end end diff --git a/lib/lepus/processes/consumer.rb b/lib/lepus/processes/consumer.rb index 7eb44b9..f803bdf 100644 --- a/lib/lepus/processes/consumer.rb +++ b/lib/lepus/processes/consumer.rb @@ -8,7 +8,8 @@ class Consumer < Base def initialize(class_name:, **options) @consumer_class = class_name - @consumer_class = @consumer_class.constantize if @consumer_class.is_a?(String) + @consumer_class = Lepus::Primitive::String.new(@consumer_class).constantize if @consumer_class.is_a?(String) + super(**options) end diff --git a/lib/lepus/processes/interruptible.rb b/lib/lepus/processes/interruptible.rb index 9e634fc..f96fb08 100644 --- a/lib/lepus/processes/interruptible.rb +++ b/lib/lepus/processes/interruptible.rb @@ -3,6 +3,7 @@ module Lepus::Processes module Interruptible def wake_up + puts "[Interruptible |> #{self.class.name}] Waking up process..." interrupt end @@ -11,6 +12,7 @@ def wake_up SELF_PIPE_BLOCK_SIZE = 11 def interrupt + puts "[Interruptible |> #{self.class.name}] Interrupting process..." self_pipe[:writer].write_nonblock(".") rescue Errno::EAGAIN, Errno::EINTR # Ignore writes that would block and retry diff --git a/lib/lepus/supervisor.rb b/lib/lepus/supervisor.rb index 4d70f5e..0d3f1d0 100644 --- a/lib/lepus/supervisor.rb +++ b/lib/lepus/supervisor.rb @@ -2,7 +2,7 @@ module Lepus class Supervisor < Processes::Base - include LifecycleHooks + # include LifecycleHooks include Maintenance include Signals include Pidfiled @@ -25,17 +25,17 @@ def initialize(configuration) def start boot - run_start_hooks + # run_start_hooks start_processes - launch_maintenance_task + # launch_maintenance_task supervise end def stop super - run_stop_hooks + # run_stop_hooks end private