Какое имя отправителя для уведомления об исключении?

У меня проблема с настройками smtp и гемом Exception Notification.

Поскольку мне нужно отправлять письма с нескольких адресов, я использовал настройки, описанные в этом посте:

http://justinreid.com/configure-actionmailer-to-use-multiple-smtp-settings/

Ruby (/config/initializers/action_mailer.rb)

module ActionMailer
  class Base
    cattr_accessor :smtp_config

    self.smtp_config = YAML::load(File.open("#{Rails.root}/config/smtp.yml"))[Rails.env]

    def self.smtp_settings
      mailer = self.smtp_config[mailer_name]
      @@smtp_settings = mailer.symbolize_keys
    end

  end
end

YAML (/config/smtp.yml)

common: &common
  address: "smtp.gmail.com"
  port: 587
  authentication: "plain"
  enable_starttls_auto: true

development:
  account_mailer:
    <<: *common,
    domain: "mail.dev.domain.com",
    user_name: "support@dev.domain.com",
    password: "password",
    from: "Domain Support "
  message_mailer:
    <<: *common,
    domain: "mail.messages.dev.domain.com",
    user_name: "messenger@messages.dev.domain.com",
    password: "password",
    from: "Domain Messages "
production:
  account_mailer:
    <<: *common,
    domain: "mail.domain.com",
    user_name: "support@domain.com",
    password: "password",
    from: "Domain Support "
  message_mailer:
    <<: *common,
    domain: "mail.messages.domain.com",
    user_name: "messenger@messages.domain.com",
    password: "password",
    from: "Domain Messages "

В файле YAML есть настройки для каждой комбинации почтовой программы и среды. Все работает хорошо, когда я отправляю письма с моими почтовыми программами. Но когда я пытаюсь использовать гем Exception Notification, я получаю не уведомление по электронной почте, а сообщение об ошибке в моем файле журнала:

Произошла ошибка при отправке уведомления с использованием уведомления по электронной почте. NoMethodError: неопределенный метод symbolize_keys' for nil:NilClass /home/maurice/rails/abmore_server2/config/initializers/action_mailer.rb:9:in smtp_settings'

Мне кажется, что Gem Exception Notification имеет собственное почтовое имя и пытается найти соответствующие параметры smtp в smtp.yml, которые он не может найти, потому что он не определен. Я пытался найти в каталоге gems lib имя почтовой программы, но не могу его найти, потому что я более или менее новичок в RoR.

Для вашей информации: Уведомление об исключении настраивается в:

Ruby (/config/initializers/exception_notification.rb)

AppName::Application.config.middleware.use ExceptionNotification::Rack,
    :ignore_exceptions => [],
  :email => {
    :email_prefix => "development - error: ",
    :sender_address => "username@username.com",
    :exception_recipients => "recipient@recipient.com",
    :delivery_method => :smtp,
    :smtp_settings => {
      :address => "smtp.gmail.com",
      :port => 587,
      :authentication => "plain",
      :user_name => "username@username.com",
      :password => "password",
      enable_starttls_auto: true
    }
  }

Я думаю, что я должен искать в этом файле здесь: https://github.com/smartinez87/exception_notification/blob/master/lib/exception_notifier/email_notifier.rb

Может кто-нибудь сказать мне, как правильно имя почтового модуля Gem уведомления об исключении, чтобы я мог добавить его в мой файл smtp.yml?

Я использую Rails 3.2.x в моем проекте. Поэтому я не могу использовать новый:delivery_method_options.

1 ответ

Решение

С помощью гема отладчика: https://github.com/cldwalker/debugger и этого учебника по Railscasts: http://railscasts.com/episodes/54-debugging-ruby-revised?autoplay=true мне удалось найти это сам. Имя почтовой программы - "имя_исключения".

Другие вопросы по тегам