action mailer settings and dkim signing

I am trying to figure out why this block of code in my environments/production.rb file is causing the dkim signing to break. I have email being sent from a rake task with my UserMailer class. It is derived from Devise::Mailer. If I have the action_mailer configuration block within the “config.after_initialize” the dkim signature does not go through. If I don’t have that line “after_initialize” the signature goes through. Can someone shed some light on this for me?

Here’s the code for my UserMailer class and the production.rb file.

user_mailer.rb

require “#{Rails.root}/app/helpers/user_helper”
include UserHelper

class UserMailer < Devise::Mailer
helper :application # gives access to all helpers defined within application_helper.
include Devise::Controllers::UrlHelpers # Optional. eg. confirmation_url
default from: “Save The Sparkles contact@savethesparkles.com”,
reply_to: “contact@savethesparkles.com

end

``

environments/production.rb

config.action_mailer.asset_host = ‘http://savethesparkles.com

config.action_mailer.default_url_options = { host: ‘savethesparkles.com’ }
config.after_initialize do
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: ‘email-smtp.us-east-1.amazonaws.com’,
port: 587,
domain: ‘savethesparkles.com’,
user_name: ENV[‘AWS_SES_USER’],
password: ENV[‘AWS_SES_PASS’],
authentication: :login,
enable_starttls_auto: true
}
end

``

The documentation for Rails::Railtie::Configuration describes after_initialize as the “last configurable block to run, called after frameworks initialize”. ActionMailer’s own initialization routine copies the values from config.action_mailer before the code above sets them. So the behavior you’ve described makes sense.

A better question is, why is having after_initialize here important? What’s the intent?

–Matt Jones