Rails / Devise / Mailer: выдает ошибку 'config.action_mailer.default_url_options' при попытке регистрации - PullRequest
2 голосов
/ 10 апреля 2011

Это просто одна проблема за другой сегодня.Я только что развернул на своем рабочем сервере и протестировал его с проблемами, когда что-либо связано с электронной почтой.В частности, при подтверждении регистрации по электронной почте от Devise, когда я регистрируюсь для учетной записи, в журнале появляется следующая ошибка ...

ActionView::Template::Error (You can no longer call ActionMailer::Base.default_url_options directly. You need to set config.action_mailer.default_url_options. If you are using ActionMailer standalone, you need to include the routing url_helpers directly.):

Глядя на мой config / environment / production.rb, я получаюследующий набор ...

config.action_mailer.default_url_options = { :host => 'localhost' } 

Итак, config.action_mailer.default_url_options IS используется, но полностью игнорируется.Я попытался изменить хост на «127.0.0.1» и IP-адрес моего сервера, но его не было.Скинул его в config / application.rb, но не пошел.Я искал в своем проекте любые другие строки, объявляющие default_url_options, но он установлен только в файле production.rb.Я гуглил и нашел пост, предлагающий установить config.cache_classes в false, но также и отрицательно.

Теперь вот что сумасшествие ... Я получал ту же ошибку, когда пытался отправить новый комментарий вмой проект (настроен на отправку электронного письма для подтверждения адреса электронной почты, если вы впервые комментируете).Я взял OUT config.action_mailer ... и т. Д. Из файла production.rb и альта - мой почтовый почтовый ящик сработал и отправил электронное письмо очень хорошо!

Тем не менее, Devise абсолютно упрям ​​и продолжает выдавать вышеуказанную ошибкуна меня.Есть идеи, почему?Кстати, все мои драгоценные камни в актуальном состоянии.Ниже находится мой файл production.rb.

--- ОБНОВЛЕНИЕ ---------------

Достигнут небольшой прогресс, но это просто странно.Когда я запускаю сервер и пытаюсь сделать что-то, что будет отправлять почту (регистрация пользователя, комментарий), я получаю сообщение об ошибке ActionMailer :: Base выше.Когда я пробую действие СНОВА ... оно работает и почта отправляется.С этого момента (до перезагрузки Пассажира и / или сервера) все действия почтовой программы работают нормально.

Но не без еще одной проблемы (она никогда не заканчивается) ... по какой-то причине тело письма полностьюпустой.

Ответы [ 3 ]

4 голосов
/ 07 мая 2011

Я снова столкнулся с этой проблемой, когда попытался выполнить тестирование в тестовой базе данных, и я был полон решимости раз и навсегда выяснить, почему я получаю эту ошибку и почему, похоже, никто больше не сталкивался с ней(очень мало результатов от Google).

После полного сноса моего проекта и его реконструкции я, наконец, определил проблемы с установленным плагином Sitemap-generator.Как только я удалил все следы, вышеуказанная ошибка, наконец, прекратилась.

1 голос
/ 19 июля 2011

Я работаю над этой проблемой для Fat Free CRM, и я понял, что эта ошибка происходит из-за ленивой загрузки классов Rails 3.Все, что вам нужно сделать, это «прикоснуться» к классу ActionMailer :: Base в ваших файлах environment / **. Rb, и он загрузит класс.Затем вы можете вызвать ActionMailer :: Base.default_url_options из контроллера и т. Д. (Мы делаем это так, чтобы мы могли автоматически устанавливать почтовый хост из request.host_with_port)

Так что мои файлы среды теперь выглядят так:

FatFreeCRM::Application.configure do

  ...

  ActionMailer::Base
end
0 голосов
/ 12 апреля 2011

Я думаю, что решил эту проблему ... хотя я не "точно" уверен, что это сделал.Возможно, это был config.cache_classes = true, который я прокомментировал, и хотя я был обеспокоен, что это повлияет на кэширование моего сайта или что-то еще, похоже, это не сломало его.

Кроме того,пустое тело письма я решил, переключившись с: sendmail на: smtp.

Вот мой последний файл production.rb, надеюсь, он пригодится кому-то с подобной проблемой в будущем.

MyProject::Application.configure do

  # Commented out, causes 'ActionView::Template' error
  #config.cache_classes = true

  config.whiny_nils = true

  config.consider_all_requests_local = true

  config.action_view.debug_rjs = true

  config.action_controller.perform_caching = true

  config.cache_store = :mem_cache_store

  config.active_support.deprecation = :log

  config.action_dispatch.best_standards_support = :builtin

  config.action_mailer.raise_delivery_errors = true

  Sunspot.config.solr.url = 'http://127.0.0.1:8080/solr'

  Paperclip.options[:command_path] = "/usr/bin/"

  config.action_mailer.perform_deliveries = true

  config.action_mailer.delivery_method = :smtp

  ActionMailer::Base.smtp_settings = {
    :address => "smtp.gmail.com",
    :enable_starttls_auto => true,
    :port => 587,
    :authentication => :plain,
    :user_name => "user@domain.com",
    :password => 'password'
  }

  config.action_mailer.default_url_options = { :host => 'dev.mydomain.com' }

  config.time_zone = "Central Time (US & Canada)"

end
...