Sha256: 6a7b8c31ffff336753550b1e9bd7f1534fe952bb0eba84799ff0925d993e9e67
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true unless "".respond_to?(:safe_constantize) require "active_delivery/ext/string_constantize" using ActiveDelivery::Ext::StringConstantize end module ActiveDelivery module Lines # AbstractNotifier line for Active Delivery. # # You must provide custom `resolver` to infer notifier class # (if String#safe_constantize is defined, we convert "*Delivery" -> "*Notifier"). # # Resolver is a callable object. class Notifier < ActiveDelivery::Lines::Base DEFAULT_SUFFIX = "Notifier" def initialize(**opts) super @resolver ||= build_resolver(options.fetch(:suffix, DEFAULT_SUFFIX)) end def resolve_class(klass) resolver&.call(klass) end def notify?(method_name) return unless handler_class handler_class.action_methods.include?(method_name.to_s) end def notify_now(handler, mid, *args) handler.public_send(mid, *args).notify_now end def notify_later(handler, mid, *args) handler.public_send(mid, *args).notify_later end private attr_reader :resolver def build_resolver(suffix) lambda do |klass| klass_name = klass.name klass_name&.sub(/Delivery\z/, suffix)&.safe_constantize end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
active_delivery-1.0.0 | lib/active_delivery/lines/notifier.rb |