Module: Caffeinate::Dripper::Subscriber::ClassMethods
- Defined in:
- lib/caffeinate/dripper/subscriber.rb
Instance Method Summary collapse
-
#subscribe(subscriber, **args) ⇒ Caffeinate::CampaignSubscriber
Subscribes to the campaign.
-
#subscribe! ⇒ Object
Runs the subscriber_block.
-
#subscribers ⇒ Object
Returns the campaign’s ‘Caffeinate::CampaignSubscriber`.
-
#subscribes(&block) ⇒ Object
The subscriber block.
-
#subscribes_block ⇒ Object
:nodoc:.
Instance Method Details
#subscribe(subscriber, **args) ⇒ Caffeinate::CampaignSubscriber
Subscribes to the campaign.
OrderDripper.subscribe(order, user: order.user)
33 34 35 |
# File 'lib/caffeinate/dripper/subscriber.rb', line 33 def subscribe(subscriber, **args) caffeinate_campaign.subscribe(subscriber, **args) end |
#subscribe! ⇒ Object
Runs the subscriber_block
OrderDripper.subscribe!
16 17 18 |
# File 'lib/caffeinate/dripper/subscriber.rb', line 16 def subscribe! subscribes_block.call end |
#subscribers ⇒ Object
Returns the campaign’s ‘Caffeinate::CampaignSubscriber`
21 22 23 |
# File 'lib/caffeinate/dripper/subscriber.rb', line 21 def subscribers caffeinate_campaign.caffeinate_campaign_subscribers end |
#subscribes(&block) ⇒ Object
The subscriber block. Used to create ‘::Caffeinate::CampaignSubscribers` subscribers.
subscribes do
Cart.left_joins(:cart_items)
.includes(:user)
.where(completed_at: nil)
.where(updated_at: 1.day.ago..2.days.ago)
.having('count(cart_items.id) > 0').each do |cart|
subscribe(cart, user: cart.user)
end
end
No need to worry about checking if the given subscriber being already subscribed. The ‘subscribe` method does that for you.
Optionally, can subscribe a user manually via ‘Caffeinate::Campaign#subscribe`
60 61 62 |
# File 'lib/caffeinate/dripper/subscriber.rb', line 60 def subscribes(&block) @subscribes_block = block end |
#subscribes_block ⇒ Object
:nodoc:
38 39 40 41 42 |
# File 'lib/caffeinate/dripper/subscriber.rb', line 38 def subscribes_block raise(NotImplementedError, 'Define subscribes') unless @subscribes_block @subscribes_block end |