Каков подход «передового опыта» для настройки пользовательских глобальных настроек электронной почты по умолчанию в Rails? - PullRequest
2 голосов
/ 24 ноября 2010

Я запускаю новое приложение Rails 3 с нуля.

И когда я проходил базовую настройку (настройку гемов, сессий и т. Д.), Я столкнулся с чем-то, что мучило меня некоторое время.

Наша текущая система (смесь скриптов Ruby и приложения Rails 2) отправляет клиентам различные уведомления по электронной почте / факсу. Есть определенные вещи, которые распространены в 80% случаев - cc - определенные учетные записи электронной почты с нашей стороны и подпись электронной почты.

Ранее я только что определил GLOBALS в environment.rb, например,

SYSTEM_EMAIL_SIGNATURE

или

SYSTEM_EMAIL_NOTIFY

и использовал их позже в почтовых программах или, если это был автономный скрипт, у меня был файл setup.rb, в котором было много общих настроек, в том числе пользовательские настройки электронной почты, подобные этой.

Поскольку я перестраиваю это приложение с нуля и объединяю все скрипты в одно приложение ruby ​​- я пытался придумать лучший способ сделать это.

Сейчас я настраиваю инициализатор email.rb с настройками action_mailer, который я расширил, добавив еще несколько элементов:

      ########## Setup Global Email Defaults ##############
Site::Application.configure do
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method   = :smtp
  config.action_mailer.smtp_settings = {
    :address => 'mail.example.com',
    :port => 25,
    :domain => 'example.com',
    # These are custom to OUR setup - used later in the code 
    :default_from => 'it.systems@example.com',
    :default_notify => ["it.manager@example.com"],
    :default_signature => "
---------------------------
This is an automatic email.
If you have any questions please contact customer service 
at 1 (800) 888-0000 or go to http://www.example.com.
Thank you for your business!" 

  }



end  

Так это хороший подход? Или есть ли лучший способ, чем эти два подхода?

1 Ответ

2 голосов
/ 24 ноября 2010

Я думаю, что вы на правильном пути для default_from и default_notify. Я бы не стал использовать настройки SMTP для этого; это не настройки SMTP, это просто общие настройки почтовой программы.

Я бы пошел с чем-то вроде этого в инициализаторе:

MAILER_SETTINGS = YAML::load(open(File.join(Rails.root, "config", "mailer.yml")).read)[Rails.env]

С файлом yaml, который выглядит следующим образом:

development: &development
  default_from: foo@bar.com
  default_notify: ["foo@bar.com"]  

production:
  <<: *development
  default_from: production@bar.com

Это позволяет вам устанавливать значения по умолчанию, затем каскадировать их и переопределять для каждой среды по желанию.

Однако для подписи я бы просто переместил это в частичное, которое вы затем включаете в свои почтовые шаблоны. Они являются представлениями, как и любые другие, и могут иметь макеты, частичные значения и все такое.

...