class Caffeinate::ScheduleEvaluator

Attributes

mailing[R]

Public Class Methods

call(drip, mailing) click to toggle source
# File lib/caffeinate/schedule_evaluator.rb, line 23
def self.call(drip, mailing)
  new(drip, mailing).call
end
new(drip, mailing) click to toggle source
# File lib/caffeinate/schedule_evaluator.rb, line 28
def initialize(drip, mailing)
  @drip = drip
  @mailing = mailing
end

Public Instance Methods

call() click to toggle source
# File lib/caffeinate/schedule_evaluator.rb, line 34
def call
  if periodical?
    start = Caffeinate.config.now.call
    if options[:start]
      start = OptionEvaluator.new(options[:start], self, mailing).call
    end
    start += OptionEvaluator.new(options[:every], self, mailing).call if mailing.caffeinate_campaign_subscription.caffeinate_mailings.size.positive?
    date = start
  elsif options[:on]
    date = OptionEvaluator.new(options[:on], self, mailing).call
  else
    date = OptionEvaluator.new(options[:delay], self, mailing).call
  end

  if date.respond_to?(:from_now)
    date = date.from_now
  end

  if options[:at]
    time = OptionEvaluator.new(options[:at], self, mailing).call
    return date.change(hour: time.hour, min: time.min, sec: time.sec)
  end

  date
end
method_missing(method, *args, &block) click to toggle source
# File lib/caffeinate/schedule_evaluator.rb, line 64
def method_missing(method, *args, &block)
  @drip.send(method, *args, &block)
end
respond_to_missing?(name, include_private = false) click to toggle source
# File lib/caffeinate/schedule_evaluator.rb, line 60
def respond_to_missing?(name, include_private = false)
  @drip.respond_to?(name, include_private)
end

Private Instance Methods

periodical?() click to toggle source
# File lib/caffeinate/schedule_evaluator.rb, line 70
def periodical?
  @drip.type.periodical?
end