Override ActionMailer subject in staging environment

actionmailer, ruby, ruby-on-rails, ruby-on-rails-3

Solution

Here's an elegant solution I found using ActionMailer Interceptor based on an existing answer.

# config/initializers/change_staging_email_subject.rb
if Rails.env.staging?
  class ChangeStagingEmailSubject
    def self.delivering_email(mail)
      mail.subject = "[STAGING] " + mail.subject
    end
  end
  ActionMailer::Base.register_interceptor(ChangeStagingEmailSubject)
end

Problem

I would like all the emails sent from our staging server to have the phrase "[STAGING] " prefaced in the subject. Is there an elegant way to do this in Rails 3.2 using ActionMailer?

Original source

Related problems