module Caffeinate::Dripper::Campaign::ClassMethods

Public Instance Methods

caffeinate_campaign() click to toggle source

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

If ‘config.implicit_campaigns` is true, this will automatically create a `Caffeinate::Campaign` if one is not found via the `campaign_slug`.

# File lib/caffeinate/dripper/campaign.rb, line 41
def caffeinate_campaign
  return @caffeinate_campaign if @caffeinate_campaign.present?

  if ::Caffeinate.config.implicit_campaigns?
    @caffeinate_campaign = ::Caffeinate::Campaign.find_or_initialize_by(slug: campaign_slug)
    if @caffeinate_campaign.new_record?
      @caffeinate_campaign.name = "#{name.delete_suffix('Dripper').titleize} Campaign"
      @caffeinate_campaign.save!
    end
  else
    @caffeinate_campaign = ::Caffeinate::Campaign[campaign_slug]
  end

  @caffeinate_campaign
end
Also aliased as: campaign
campaign()
Alias for: caffeinate_campaign
campaign=(slug) click to toggle source

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

class OrdersDripper < ApplicationDripper
  campaign :order_drip
end

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

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

@param [Symbol] slug The slug of a persisted ‘Caffeinate::Campaign`.

# File lib/caffeinate/dripper/campaign.rb, line 31
def campaign=(slug)
  @caffeinate_campaign = nil
  @_campaign_slug = slug.to_sym
  Caffeinate.dripper_collection.register(@_campaign_slug, name)
end
campaign_slug() click to toggle source

The defined slug or the inferred slug

# File lib/caffeinate/dripper/campaign.rb, line 59
def campaign_slug
  @_campaign_slug || inferred_campaign_slug
end