我已经在Rails 4应用程序中设置了Sidekiq,用于发送电子邮件和处理后台作业。我还使用Devise,并使用Devise Async和典型的联系表单电子邮件程序。我正在使用Gmail发送电子邮件。
如果我删除Sidekiq,它会通过Gmail正常发送电子邮件(Devise和联系表单都可以),但是当我启用它时,它无法正常工作(无论是Devise Async还是联系表单)。Sidekiq显示后台作业已经成功启动和完成(我也可以通过Sinatra应用程序看到它们已被处理),但电子邮件从未被传送。
在开发环境中,控制台显示电子邮件已发送(Devise Async和联系表单均已成功处理)。
我已经尝试过的:
- 我已添加了适用于Rails 4的Sidekiq的GitHub分支(也尝试过主分支)
- 我已更新并检查Redis版本是否大于2.4(它是2.6.14)
- 我正在使用
bundle exec sidekiq
运行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: "myemail@gmail.com", 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/ruby-2.0.0-p247@cluey/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有关,但我不知道如何进行调试,一切似乎都正常,但电子邮件从未被发送。