Я установил sidekiq в приложении rails 4 для отправки электронных писем и обработки фоновых заданий. Я также разработал, что я использую devise_async и типичный почтовый клиент контактной формы. Я использую gmail для отправки писем.
Если я удаляю sidekiq, он отправляет письма обычно через gmail (как для формы, так и для формы), но когда я включаю его, он не работает (ни devise_async ни контактная форма). Sidekiq показывает, что фоновые задания начинаются и заканчиваются успешно (я также вижу их через приложение synatra, которое оно обрабатывалось), но электронная почта никогда не была доставлена.
В разработке консоль показывает, что отправленные сообщения (как с devise_async, так и из контактной формы, поскольку они обрабатываются с помощью sidekiq успешно).
Что я уже пробовал:
- Я добавил ветку github для rails4 sidekiq (я также попробовал мастер)
- Я обновил и проверил версию redis на большее, чем 2.4 (это 2.6.14)
- Я запускаю sidekiq с
bundle exec sidekiq
но ничего не получилось. Я использую ruby 2.0.0-p247.
Я также установил обработку изображений с sidekiq в этом приложении и отлично работает как в разработке, так и в производстве.
Я ничего не делаю, но добавляю код для завершения:
Мой почтовый код:
def send_message
@message = Message.new(message_params)
if @message.save
ContactMailer.delay.contact_form(@message.id)
end
end
Моя почта:
def contact_form(message_id)
message = Message.where(id: message_id).first
@email = message.email
@message = message.text
mail(to: "[email protected]", subject: "Message from contact form")
end
и моя конфигурация для производства (которая работает без sidekiq):
config.action_mailer.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:authentication => "plain",
:enable_starttls_auto => true,
:user_name => "myusername",
:password => "mypassword"
}
config.action_mailer.default_url_options = { :host => "mydomain.com" }
И здесь типичная очередь sidekiq:
/home/john/.rvm/gems/[email protected]/bundler/gems/sidekiq-4ed6eba8aff1/lib/sidekiq/rails.rb:14: warning: toplevel constant Queue referenced by Sidekiq::Client::Queue
2013-07-19T09:47:56Z 20112 TID-1a5mkc INFO: Booting Sidekiq 2.5.2 with Redis at redis://localhost:6379/0
2013-07-19T09:47:56Z 20112 TID-1a5mkc INFO: Running in ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux]
2013-07-19T09:47:56Z 20112 TID-1a5mkc INFO: See LICENSE and the LGPL-3.0 for licensing details.
2013-07-19T09:47:56Z 20112 TID-1a5mkc INFO: Starting processing, hit Ctrl-C to stop
2013-07-19T09:48:11Z 20112 TID-1u2z02 Devise::Async::Backend::Sidekiq JID-4a7e66a14deab112191e4b49 INFO: start
2013-07-19T09:48:12Z 20112 TID-1u2z02 Devise::Async::Backend::Sidekiq JID-4a7e66a14deab112191e4b49 INFO: done: 1.214 sec
2013-07-19T09:48:50Z 20112 TID-1u2z02 Devise::Async::Backend::Sidekiq JID-32191822b789f5b6896a5353 INFO: start
2013-07-19T09:48:51Z 20112 TID-1u2z02 Devise::Async::Backend::Sidekiq JID-32191822b789f5b6896a5353 INFO: done: 0.143 sec
2013-07-19T09:49:29Z 20112 TID-1u2z02 Sidekiq::Extensions::DelayedMailer JID-c1911e0c4b72295dc067d57f INFO: start
2013-07-19T09:49:29Z 20112 TID-1u2z02 Sidekiq::Extensions::DelayedMailer JID-c1911e0c4b72295dc067d57f INFO: done: 0.152 sec
Я думаю, что это связано с actionmailer и sidekiq, но я не знаю, как отлаживать, все, кажется, работает, но письма никогда не поставлялись.