Module: Notifyor::Plugin::ClassMethods

Defined in:
lib/notifyor/plugin.rb

Instance Method Summary collapse

Instance Method Details

#append_callbacks(configuration) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/notifyor/plugin.rb', line 21

def append_callbacks(configuration)
  configuration[:only].each do |action|
    case action
      when :create
        self.after_commit -> { ::Notifyor.configuration.redis_connection.publish "notifyor", {message: configuration[:messages][:create].call(self)}.to_json }, on: :create, if: -> { configuration[:only].include? :create }
      when :update
        self.after_commit -> { ::Notifyor.configuration.redis_connection.publish "notifyor", {message: configuration[:messages][:update].call(self)}.to_json }, on: :update, if: -> { configuration[:only].include? :update }
      when :destroy
        self.before_destroy -> { ::Notifyor.configuration.redis_connection.publish "notifyor", {message: configuration[:messages][:destroy].call(self)}.to_json }, if: -> { configuration[:only].include? :destroy }
      else
        #nop
    end
  end
end

#configure_plugin(options = {}) ⇒ Object



16
17
18
19
# File 'lib/notifyor/plugin.rb', line 16

def configure_plugin(options = {})
  configuration = default_configuration.deep_merge(options)
  append_callbacks(configuration)
end

#default_configurationObject



36
37
38
39
40
41
42
43
44
45
# File 'lib/notifyor/plugin.rb', line 36

def default_configuration
  {
      only: [:create, :destroy, :update],
      messages: {
          create: -> (model) { I18n.t('notifyor.model.create', model: model.class.model_name.human) },
          update: -> (model) { I18n.t('notifyor.model.update', model: model.class.model_name.human) },
          destroy: -> (model) { I18n.t('notifyor.model.destroy', model: model.class.model_name.human) }
      }
  }
end

#notifyor(options = {}) ⇒ Object



12
13
14
# File 'lib/notifyor/plugin.rb', line 12

def notifyor(options = {})
  configure_plugin(options)
end