Class: Announcer::Publishers::ResquePublisher

Inherits:
Publisher
  • Object
show all
Defined in:
lib/announcer/publishers/resque_publisher.rb

Defined Under Namespace

Modules: PublisherJob, SubscriptionJob

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Publisher

#config

Methods included from Mixins::HasConfig

#_has_config_config, #_has_config_load_config, #config, included

Methods included from Mixins::HasInstance

#instance, #plugins

Constructor Details

#initialize(instance = nil, params = {}) ⇒ ResquePublisher

Returns a new instance of ResquePublisher.



8
9
10
11
# File 'lib/announcer/publishers/resque_publisher.rb', line 8

def initialize(instance=nil, params={})
  super
  _disallow_multiple_per_instance
end

Class Method Details

.subscription_queue_formatter(config) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/announcer/publishers/resque_publisher.rb', line 27

def subscription_queue_formatter(config)
  if config.subscription_queue_formatter?
    formatter = config.subscription_queue_formatter
    case formatter
    when Array
      formatter.last
    when Proc
      formatter
    else
      raise Errors::PublisherError, "Invalid subscription_queue_formatter: #{formatter.inspect}"
    end
  else
    lambda { |subscription| "subscriptions_p#{subscription.priority}" }
  end
end

Instance Method Details

#publish(event) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/announcer/publishers/resque_publisher.rb', line 13

def publish(event)
  super

  unless event.subscriptions.empty?
    PublisherJob.set_queue(config.publisher_queue.to_sym)
    Resque.enqueue(PublisherJob, event.serialize)
  end
end

#subscription_queue_formatterObject



22
23
24
# File 'lib/announcer/publishers/resque_publisher.rb', line 22

def subscription_queue_formatter
  self.class.subscription_queue_formatter(config)
end