Module: Roda::RodaPlugins::Mailer::ClassMethods

Defined in:
lib/roda/plugins/mailer.rb

Instance Method Summary collapse

Instance Method Details

#mail(path, *args) ⇒ Object

Return a Mail::Message instance for the email for the given request path and arguments. Any arguments given are yielded to the appropriate r.mail block after any usual match block arguments. You can further manipulate the returned mail object before calling deliver to send the mail.



147
148
149
150
151
152
153
154
155
# File 'lib/roda/plugins/mailer.rb', line 147

def mail(path, *args)
  mail = ::Mail.new
  catch(:no_mail) do
    unless mail.equal?(new("PATH_INFO"=>path, 'SCRIPT_NAME'=>'', "REQUEST_METHOD"=>"MAIL", 'rack.input'=>StringIO.new, 'roda.mail'=>mail, 'roda.mail_args'=>args)._roda_handle_main_route)
      raise Error, "route did not return mail instance for #{path.inspect}, #{args.inspect}"
    end
    mail
  end
end

#sendmail(*args) ⇒ Object

Calls mail with given arguments and immediately sends the resulting mail.



161
162
163
164
165
# File 'lib/roda/plugins/mailer.rb', line 161

def sendmail(*args)
  if m = mail(*args)
    m.deliver
  end
end