Rails 4.2 - Sidekiq 在开发中不发送电子邮件
Posted
技术标签:
【中文标题】Rails 4.2 - Sidekiq 在开发中不发送电子邮件【英文标题】:Rails 4.2 - Sidekiq not sending emails in development 【发布时间】:2015-05-02 00:11:42 【问题描述】:我有一个 Rails 应用程序,其中我有一个发送大量电子邮件的方法。我想执行此操作asynchronously
。为此,我尝试使用Sidekiq
,但我无法让它正常工作——它不发送任何电子邮件。
以前可以发送电子邮件,所以我确定我的电子邮件设置设置正确。
在我的gemfile
我有这个:
gem 'sidekiq'
我已经运行bundle install
。我还安装了redis
,按照RailsCasts #366 上的说明进行操作。
我已使用以下命令启动sidekiq
:bundle exec sidekiq
,结果如下图所示:
在application.rb
我有以下内容:
config.active_job.queue_adapter = :sidekiq
我尝试这样发送电子邮件:
Mailer.deliver_new_competition_notification(member.user, @competition).deliver_later!
我没有收到任何错误,但电子邮件永远不会发送。
那么,我错过了什么吗?
【问题讨论】:
您是否包含了 proc 文件? @sansarp 不,我没有。安东尼在下面的回答足以让它发挥作用。但是我对 Procfile 很好奇,您能否详细说明我如何包含 ad Procfile,它应该包含什么以及为什么? 【参考方案1】:您需要使用邮件队列启动 sidekiq 以获取这些作业:
bundle exec sidekiq -q default -q mailers
Sidekiq Wiki 回顾了detail here 中的场景。
【讨论】:
【参考方案2】:你也可以修改 config/sidekiq.yml:
---
:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
- default
- mailers
然后运行sidekiq -C config/sidekiq.yml
【讨论】:
运行 sidekiq -C config/sidekiq.yml 帮助了我 - 谢谢!以上是关于Rails 4.2 - Sidekiq 在开发中不发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有啥不同
Sidekiq 3.4.2 和 Rails 4.2.0 出现“未定义方法 perform_at”错误
Rails 6主动存储sidekiq文件在S3上上传背景图片