Sha256: 7b1d18aa6589b5899f8ca50acdb83d3792b7b75dfd8c5efa69d1010adaa792cf

Contents?: true

Size: 1012 Bytes

Versions: 7

Compression:

Stored size: 1012 Bytes

Contents

module Outbox
  module NotifierTypes
    extend ActiveSupport::Concern

    included do
      Outbox::Message.message_types.each_key do |message_type|
        define_notifier_type_reader(message_type)
        define_notifier_type_writer(message_type)
        define_skip_notifier_type(message_type)
      end
    end

    module ClassMethods
      DYNAMIC_MODULE_NAME = :DynamicNotifierTypes

      protected

      def define_notifier_type_reader(name)
        define_inheritable_method(DYNAMIC_MODULE_NAME, name) do |*args, &block|
          @_message.public_send(name, *args, &block)
        end
      end

      def define_notifier_type_writer(name)
        define_inheritable_method(DYNAMIC_MODULE_NAME, "#{name}=") do |value|
          @_message.public_send("#{name}=", value)
        end
      end

      def define_skip_notifier_type(name)
        define_inheritable_method(DYNAMIC_MODULE_NAME, "skip_#{name}!") do
          @_message.public_send("#{name}=", nil)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
outbox-rails-1.0.0 lib/outbox/notifier_types.rb
outbox-rails-0.5.1 lib/outbox/notifier_types.rb
outbox-rails-0.5.0 lib/outbox/notifier_types.rb
outbox-rails-0.4.2 lib/outbox/notifier_types.rb
outbox-rails-0.4.1 lib/outbox/notifier_types.rb
outbox-rails-0.4.0 lib/outbox/notifier_types.rb
outbox-rails-0.3.0 lib/outbox/notifier_types.rb