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
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