Class: Backburner::Mailer::MessageDecoy

Inherits:
Object
  • Object
show all
Defined in:
lib/backburner_mailer.rb

Instance Method Summary collapse

Constructor Details

#initialize(mailer_class, method_name, *args) ⇒ MessageDecoy

Returns a new instance of MessageDecoy.



86
87
88
89
90
# File 'lib/backburner_mailer.rb', line 86

def initialize(mailer_class, method_name, *args)
  @mailer_class = mailer_class
  @method_name = method_name
  *@args = *args
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args) ⇒ Object



134
135
136
# File 'lib/backburner_mailer.rb', line 134

def method_missing(method_name, *args)
  actual_message.send(method_name, *args)
end

Instance Method Details

#actual_messageObject



114
115
116
# File 'lib/backburner_mailer.rb', line 114

def actual_message
  @actual_message ||= @mailer_class.send(:new, @method_name, *@args).message
end

#backburnerObject



92
93
94
# File 'lib/backburner_mailer.rb', line 92

def backburner
  ::Backburner::Mailer.default_queue_target
end

#current_envObject



96
97
98
99
100
101
102
103
104
# File 'lib/backburner_mailer.rb', line 96

def current_env
  if defined?(Rails)
    ::Backburner::Mailer.current_env || ::Rails.env
  elsif defined?(Padrino)
    ::Backburner::Mailer.current_env || ::Padrino.env
  else
    ::Backburner::Mailer.current_env
  end
end

#deliver(opts = {}) ⇒ Object



118
119
120
121
122
123
124
125
126
127
128
# File 'lib/backburner_mailer.rb', line 118

def deliver(opts = {})
  return deliver! if environment_excluded?

  if @mailer_class.deliver?
    begin
      backburner.enqueue(@mailer_class, [@method_name].concat(@args), opts)
    rescue Errno::ECONNREFUSED
      deliver!
    end
  end
end

#deliver!Object



130
131
132
# File 'lib/backburner_mailer.rb', line 130

def deliver!
  actual_message.deliver
end

#environment_excluded?Boolean

Returns:

  • (Boolean)


106
107
108
# File 'lib/backburner_mailer.rb', line 106

def environment_excluded?
  !ActionMailer::Base.perform_deliveries || excluded_environment?(current_env)
end

#excluded_environment?(name) ⇒ Boolean

Returns:

  • (Boolean)


110
111
112
# File 'lib/backburner_mailer.rb', line 110

def excluded_environment?(name)
  ::Backburner::Mailer.excluded_environments && ::Backburner::Mailer.excluded_environments.include?(name.to_sym)
end