Skip to content

Integration with postmark rails ( or any ActionMailer adapter )

webdevotion edited this page Feb 8, 2013 · 4 revisions

When you use postmark-rails ( and propably any other adapter for ActionMailer ),
you might run into a NoMethodError when you use a custom ActionMailer class.

NoMethodError - undefined method `invitation_instructions' for MyCustomMailerKlass:Class:
(gem) actionmailer-3.2.11/lib/action_mailer/base.rb:438:in `method_missing'
  (gem) devise-2.1.2/lib/devise/models/authenticatable.rb:163:in `send_devise_notification'
  (gem) devise_invitable-1.1.5/lib/devise_invitable/model.rb:168:in `deliver_invitation'
  (gem) devise_invitable-1.1.5/lib/devise_invitable/model.rb:132:in `invite!'
  (gem) devise_invitable-1.1.5/lib/devise_invitable/model.rb:240:in `_invite'
  (gem) devise_invitable-1.1.5/lib/devise_invitable/model.rb:252:in `invite!'

To fix this, make sure you are including DeviseInvitable::Mailer.

# app/mailers/my_custom_mailer_klass.rb
class MyCustomMailerKlass < ActionMailer::Base
  
  include Devise::Mailers::Helpers
  # this is the important line for devise_invitable functionality
  include DeviseInvitable::Mailer
  
  def weekly_mail
    ...
  end

end

Don't forget to move the generated devise_invitable views
from app/views/devise/ to app/views/my_custom_mailer_klass/.
To generate the devise_invitable views run rails g devise_invitable:views. The relevant views will appear in app/views/devise/. Your file structure should look like this:

app/views/my_custom_mailer_klass/
app/views/my_custom_mailer_klass/invitation_instructions.html.erb
app/views/my_custom_mailer_klass/invitations/edit.html.erb
app/views/my_custom_mailer_klass/invitations/new.html.erb