Sha256: d13f725163aefb761fb656c33774b19e96747519e380ffc2775de22afa105e50

Contents?: true

Size: 979 Bytes

Versions: 6

Compression:

Stored size: 979 Bytes

Contents

require 'action_messenger/log_subscriber'

module ActionMessenger
  class MessageDelivery

    attr_reader :messenger_class, :method_name, :args

    def initialize(messenger_class, method_name, *args)
      @messenger_class = messenger_class
      @method_name = method_name
      @args = args
    end

    # send a message now
    def deliver_now!
      messenger.handle_exceptions do
        ActiveSupport::Notifications.instrument('deliver_now!.action_messenger', method_name: method_name, args: args) do
          if args.present?
            messenger.public_send(method_name, *args)
          else
            messenger.public_send(method_name)
          end
        end
      end
    end

    # send a message asynchronously
    def deliver_later!
      ActionMessenger::MessageDeliveryJob.perform_later(self.class.name, 'deliver_now!', messenger_class.to_s, method_name.to_s, *args)
    end

    def messenger
      @messenger ||= messenger_class.new
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
action_messenger-0.1.4 lib/action_messenger/message_delivery.rb
action_messenger-0.1.3 lib/action_messenger/message_delivery.rb
action_messenger-0.1.2 lib/action_messenger/message_delivery.rb
action_messenger-0.1.1 lib/action_messenger/message_delivery.rb
action_messenger-0.0.2 lib/action_messenger/message_delivery.rb
action_messenger-0.0.1 lib/action_messenger/message_delivery.rb