Почему отложенные задания не работают с моей производственной настройкой ActionMailer? - PullRequest
0 голосов
/ 30 августа 2010

Я работаю над приложением Ruby (1.8.6) на Rails (2.3.5), в котором в настоящее время я использую Gmail для доставки сообщений электронной почты.Я хочу переключиться на отправку сообщений с отложенными заданиями.

Я отложил отправку сообщений в моей среде разработки, но когда я выполняю развертывание на своем производственном сервере и пробую сообщения, они отклоняются, и в delayed__bsТаблица: 530 5.7.0 Must issue a STARTTLS command first. i25sm12946175anh.17. Я видел эту ошибку раньше (когда у меня не включен TLS в моей конфигурации).Но это работало до того, как я начал использовать delayed_jobs.Вот мой почтовый конфиг:

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

Любая помощь в этом вопросе с благодарностью.

Обновление : приложение на самом деле работает на REE ruby ​​1.8.7.Так что, возможно, отложенные задания каким-то образом используют обычный интерпретатор ruby, установленный на сервере (1.8.6).Но как мне получить отложенные задания, чтобы использовать мою установку REE?И как мне сказать, какие вещи используют какую версию Ruby.

Ответы [ 2 ]

0 голосов
/ 02 сентября 2010

Но как мне получить отложенные задания? мой REE установить? И как мне сказать, что какие версии используют Ruby.

Команда script/delayed_job использует системный Ruby. Поэтому «which ruby» должно указывать на установку REE. Если нет, вы можете форсировать его, используя исполняемый файл Ruby. Допустим, ваш REE установлен на /opt/ruby-enterprise-1.8.7-2010.01. Тогда:

$ RAILS_ENV=production /opt/ruby-enterprise-1.8.7-2010.01/bin/ruby script/delayed_job -n 2 start

Или, если вы используете команду rake для запуска, например:

$ rake jobs:work -t RAILS_ENV=production

Тогда which rake должен указывать на вашу установку REE. Если это не так, вы можете использовать REE:

RAILS_ENV=production /opt/ruby-enterprise-1.8.7-2010.01/bin/rake jobs:work -t
0 голосов
/ 30 августа 2010

Обычно вы используете :enable_starttls_auto, как вы написали, но это работает только для ruby> = 1.8.7 и ruby> = 1.9.

Так что вам нужно использовать решение, как указано здесь : определите файл smtp_tls.rb, который вы поместите в папку инициализаторов.

...