class ActiveDelivery::Lines::Base
Attributes
handler_class[W]
id[R]
options[R]
owner[RW]
resolver[R]
Public Class Methods
new(id:, owner:, **options)
click to toggle source
# File lib/active_delivery/lines/base.rb, line 10 def initialize(id:, owner:, **options) @id = id @owner = owner @options = options.tap(&:freeze) @resolver = options[:resolver] end
Public Instance Methods
dup_for(new_owner)
click to toggle source
# File lib/active_delivery/lines/base.rb, line 17 def dup_for(new_owner) self.class.new(id: id, **options, owner: new_owner) end
handler_class()
click to toggle source
# File lib/active_delivery/lines/base.rb, line 40 def handler_class return @handler_class if instance_variable_defined?(:@handler_class) return @handler_class = nil if owner.abstract_class? @handler_class = resolve_class(owner.name) || superclass_handler end
notify(mid, *args, params:, sync:, **kwargs)
click to toggle source
# File lib/active_delivery/lines/base.rb, line 35 def notify(mid, *args, params:, sync:, **kwargs) clazz = params.empty? ? handler_class : handler_class.with(**params) sync ? notify_now(clazz, mid, *args, **kwargs) : notify_later(clazz, mid, *args, **kwargs) end
notify?(method_name)
click to toggle source
# File lib/active_delivery/lines/base.rb, line 25 def notify?(method_name) handler_class.respond_to?(method_name) end
notify_later(handler, mid, *args, **kwargs)
click to toggle source
# File lib/active_delivery/lines/base.rb, line 32 def notify_later(handler, mid, *args, **kwargs) end
notify_now(handler, mid, *args, **kwargs)
click to toggle source
# File lib/active_delivery/lines/base.rb, line 29 def notify_now(handler, mid, *args, **kwargs) end
resolve_class(name)
click to toggle source
# File lib/active_delivery/lines/base.rb, line 21 def resolve_class(name) resolver&.call(name) end
Private Instance Methods
superclass_handler()
click to toggle source
# File lib/active_delivery/lines/base.rb, line 51 def superclass_handler handler_method = "#{id}_class" return if ActiveDelivery::Base == owner.superclass return unless owner.superclass.respond_to?(handler_method) owner.superclass.public_send(handler_method) end