Какое имя отправителя для уведомления об исключении?
У меня проблема с настройками 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 мне удалось найти это сам. Имя почтовой программы - "имя_исключения".