module ActsAsNotifier::LocalInstanceMethods

Public Instance Methods

force_notification(options = {}) click to toggle source

find a notification action matching options and trigger it, ignoring conditions

# File lib/acts_as_notifier.rb, line 65
def force_notification(options = {})
  opts = options.to_a
  action = self.class.notifier_actions.find { |action| action.to_a & opts == opts }
  notifier_send(action)
end

Private Instance Methods

notifier_conditions_satisfied?(action) click to toggle source
# File lib/acts_as_notifier.rb, line 91
def notifier_conditions_satisfied?(action)
  condition = action[:if]
  condition = case condition
    when String
      instance_eval(condition)
    when Proc
      instance_exec(action, &condition)
    when Symbol
      self.send(condition)
    when nil
      true
    else
      condition
  end
  !!condition
end
notifier_create_handler() click to toggle source
# File lib/acts_as_notifier.rb, line 73
def notifier_create_handler
  notifier_handler(:after_create) unless ActsAsNotifier::Config.disabled
end
notifier_get_mailer(action) click to toggle source
# File lib/acts_as_notifier.rb, line 135
def notifier_get_mailer(action)
  mailer = action[:mailer] || ActsAsNotifier::Config.default_mailer
  mailer = eval(mailer.to_s) if mailer.is_a?(String) || mailer.is_a?(Symbol)
  raise "ActsAsNotifier invalid mailer configuration, mailer not specified" unless mailer.present?

  method = action[:method] || ActsAsNotifier::Config.default_method
  raise "ActsAsNotifier invalid mailer method configuration, method not specified" unless method.present?
  raise "ActsAsNotifier invalid mailer method configuration, method must be a string or symbol" unless method.is_a?(String) || method.is_a?(Symbol)
  raise "ActsAsNotifier invalid mailer method configuration, #{method} is not a valid method of #{mailer.to_s}" unless mailer.respond_to?(method)
  return mailer, method
end
notifier_handler(callback_type) click to toggle source
# File lib/acts_as_notifier.rb, line 85
def notifier_handler(callback_type)
  self.class.notifier_actions.each do |action|
    notifier_send(action) if action[:callback_type].to_sym == callback_type && notifier_conditions_satisfied?(action)
  end
end
notifier_recipients(action) click to toggle source
# File lib/acts_as_notifier.rb, line 108
def notifier_recipients(action)
  recipients = action[:recipients]
  recipients = case recipients
    when Proc
      instance_exec(action, &recipients)
    when Symbol
      self.send(recipients)
    else
      recipients
  end
  recipients = [ recipients ] unless recipients.is_a?(Array)
  recipient_list = recipients.map {|r| r.respond_to?(:email) ? r.email : r }.join(', ')
  recipient_list
end
notifier_save_handler() click to toggle source
# File lib/acts_as_notifier.rb, line 77
def notifier_save_handler
  notifier_handler(:after_save) unless ActsAsNotifier::Config.disabled
end
notifier_send(action) click to toggle source
# File lib/acts_as_notifier.rb, line 123
def notifier_send(action)
  if  (recipients = notifier_recipients(action)).present?
    mailer, method = notifier_get_mailer(action)
    if ActsAsNotifier::Config.use_delayed_job && mailer.respond_to?(:delay)
      mailer.delay.send(method, recipients, self)
    else
      message = mailer.send(method, recipients, self)
      message.deliver if message.respond_to?(:deliver)
    end
  end
end
notifier_update_handler() click to toggle source
# File lib/acts_as_notifier.rb, line 81
def notifier_update_handler
  notifier_handler(:after_update) unless ActsAsNotifier::Config.disabled
end