class Resque::Mailer::MessageDecoy

Public Class Methods

new(mailer_class, method_name, *args) click to toggle source
# File lib/resque_mailer.rb, line 105
def initialize(mailer_class, method_name, *args)
  @mailer_class = mailer_class
  @method_name = method_name
  *@args = *args
  @serialized_args = ::Resque::Mailer.argument_serializer.serialize(*args)
  actual_message if environment_excluded?
end

Public Instance Methods

actual_message() click to toggle source
# File lib/resque_mailer.rb, line 133
def actual_message
  @actual_message ||= ::Resque::Mailer.prepare_message(@mailer_class, @method_name, *@args)
end
current_env() click to toggle source
# File lib/resque_mailer.rb, line 117
def current_env
  if defined?(Rails)
    ::Resque::Mailer.current_env || ::Rails.env
  else
    ::Resque::Mailer.current_env
  end
end
deliver() click to toggle source
# File lib/resque_mailer.rb, line 137
def deliver
  return deliver! if environment_excluded?

  if @mailer_class.deliver?
    begin
      resque.enqueue(@mailer_class, @method_name, @serialized_args)
    rescue Errno::ECONNREFUSED, Redis::CannotConnectError
      logger.error "Unable to connect to Redis; falling back to synchronous mail delivery" if logger
      deliver!
    end
  end
end
Also aliased as: deliver_now
deliver!() click to toggle source
# File lib/resque_mailer.rb, line 183
def deliver!
  if actual_message.respond_to?(:deliver_now)
    actual_message.deliver_now
  else
    actual_message.deliver
  end
end
Also aliased as: deliver_now!
deliver_at(time) click to toggle source
# File lib/resque_mailer.rb, line 151
def deliver_at(time)
  return deliver! if environment_excluded?

  unless resque.respond_to? :enqueue_at
    raise "You need to install resque-scheduler to use deliver_at"
  end

  if @mailer_class.deliver?
    resque.enqueue_at(time, @mailer_class, @method_name, @serialized_args)
  end
end
deliver_in(time) click to toggle source
# File lib/resque_mailer.rb, line 163
def deliver_in(time)
  return deliver! if environment_excluded?

  unless resque.respond_to? :enqueue_in
    raise "You need to install resque-scheduler to use deliver_in"
  end

  if @mailer_class.deliver?
    resque.enqueue_in(time, @mailer_class, @method_name, @serialized_args)
  end
end
deliver_now()
Alias for: deliver
deliver_now!()
Alias for: deliver!
environment_excluded?() click to toggle source
# File lib/resque_mailer.rb, line 125
def environment_excluded?
  !ActionMailer::Base.perform_deliveries || excluded_environment?(current_env)
end
excluded_environment?(name) click to toggle source
# File lib/resque_mailer.rb, line 129
def excluded_environment?(name)
  ::Resque::Mailer.excluded_environments && ::Resque::Mailer.excluded_environments.include?(name.to_sym)
end
logger() click to toggle source
# File lib/resque_mailer.rb, line 200
def logger
  @mailer_class.logger
end
method_missing(method_name, *args) click to toggle source
# File lib/resque_mailer.rb, line 192
def method_missing(method_name, *args)
  actual_message.send(method_name, *args)
end
respond_to?(method_name, *args) click to toggle source
Calls superclass method
# File lib/resque_mailer.rb, line 196
def respond_to?(method_name, *args)
  super || actual_message.respond_to?(method_name, *args)
end
resque() click to toggle source
# File lib/resque_mailer.rb, line 113
def resque
  ::Resque::Mailer.default_queue_target
end
unschedule_delivery() click to toggle source
# File lib/resque_mailer.rb, line 175
def unschedule_delivery
  unless resque.respond_to? :remove_delayed
    raise "You need to install resque-scheduler to use unschedule_delivery"
  end

  resque.remove_delayed(@mailer_class, @method_name, @serialized_args)
end