Я провел немало исследований по этой проблеме и не смог решить мою проблему. Я использую Rails 3.0.3, Ruby 1.8.7 (уровень патча 334), Apache, Passenger 3.0.7 и гем Devise 1.1.8. Кроме того, я использую Gmail для отправки писем. Когда я пытаюсь отправить сброс пароля, я получаю сообщение об ошибке в моем Apache error_log:
[вторник, 01:40:31 2011] [error] Преждевременное завершение заголовков скриптов: пользователи
[pid = 9371 thr = 3084437904 file = ext / apache2 / Hooks.cpp: 822 time = 2011-11-01 19: 40: 31.664]: внутреннее приложение (процесс 9569) не отправило действительный ответ HTTP; вместо этого это вообще ничего не отправляло. Возможно, что он разбился; пожалуйста, проверьте, есть ли ошибки в этом приложении.
Из моего исследования я обнаружил одну причину, по которой это может быть связано с тем, что Ruby on Rails ищет версию OpenSSL с ошибками. Я попытался предложить добавить это в мой файл .bashrc:
export RUBYOPT = "- ropenssl"
Также я попытался обновить конфигурацию SMTP в моем production.rb, чтобы не использовать TLS:
: enable_starttls_auto => false
Моя полная конфигурация SMTP:
config.action_mailer.default_url_options = { :host => '<domain>' }
ActionMailer::Base.smtp_settings = {
:enable_starttls_auto => false,
:address => "smtp.gmail.com",
:port => 587,
:domain => <domain>,
:user_name => <username>,
:password => <password>,
:authentication => "plain"
}
Кажется, ни одно из найденных мной предложений не сработало. Я не уверен, куда идти отсюда, поскольку это единственные предложения и исправления, которые я нашел. Это работает без каких-либо проблем на моей машине разработки. Который работает под управлением тех же версий всех вышеперечисленных, кроме Apache / Passenger, который я не использую локально.
Mike