Module: Caffeinate::Dripper::Campaign::ClassMethods

Defined in:
lib/caffeinate/dripper/campaign.rb

Instance Method Summary collapse

Instance Method Details

#caffeinate_campaignObject

Returns the ‘Caffeinate::Campaign` object for the Campaign

Raises:

  • (::ActiveRecord::RecordNotFound)


37
38
39
40
41
42
43
44
# File 'lib/caffeinate/dripper/campaign.rb', line 37

def caffeinate_campaign
  return @caffeinate_campaign if @caffeinate_campaign.present?

  @caffeinate_campaign = ::Caffeinate::Campaign.find_by(slug: campaign_slug)
  return @caffeinate_campaign if @caffeinate_campaign

  raise(::ActiveRecord::RecordNotFound, "Unable to find ::Caffeinate::Campaign with slug #{campaign_slug}.")
end

#campaign(slug) ⇒ Object

Sets the campaign on the Dripper and resets any existing ‘@caffeinate_campaign`

class OrdersDripper
  campaign :order_drip
end

If this is not explicitly set, we will infer it with

self.name.delete_suffix("Campaign").underscore

Parameters:

  • slug (Symbol)

    The slug of a persisted ‘Caffeinate::Campaign`.



30
31
32
33
34
# File 'lib/caffeinate/dripper/campaign.rb', line 30

def campaign(slug)
  @caffeinate_campaign = nil
  @_campaign_slug = slug.to_sym
  Caffeinate.register_dripper(@_campaign_slug, name)
end

#campaign_slugObject

The defined slug or the inferred slug



47
48
49
# File 'lib/caffeinate/dripper/campaign.rb', line 47

def campaign_slug
  @_campaign_slug || inferred_campaign_slug
end