2010-08-30 1 views
0

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

У меня есть отложенные задания, отправляющие сообщения в моей среде разработки, но когда я развертываю на своем рабочем сервере и пытаюсь отклонить сообщения, и появляется ошибка в моей таблице delayed_jobs: 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 => '[email protected]', 
    :password => 'password' 
} 

Любая помощь по этому вопросу очень ценится.

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

+0

Вы работаете с работником delayed_job? –

+0

Да, я. Он пытается их отправить, и их отклоняет gmail. – Sam

+0

Я установил Ruby EE в качестве моего значения по умолчанию, и сообщения электронной почты отправляются без ошибок. Но теперь я получаю дубликаты. :( – Sam

ответ

0

Но как я могу получить отложенные задания для использования моей установки 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 jobs:work -t RAILS_ENV=production 

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

RAILS_ENV=production /opt/ruby-enterprise-1.8.7-2010.01/bin/rake jobs:work -t 
0

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

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

+0

да, вот что я думал. Я просто не понимаю, почему это работает, если я не использую отложенные задания для его отправки. – Sam