Day 26 -- 3 Steps 部署Sidekiq 背景任务在 Heroku

实作之前准备:

第一步: 安装 Redis 在 Heroku

登入 Heroku 後,在 dashboard 上点选 Resources 页面,就会看到 Add-ons 的搜寻栏位。
https://ithelp.ithome.com.tw/upload/images/20201011/20120868DNtN543vWv.png
许多部落格的安装教学会推荐安装 Redis To Go,但如果你发现背景任务一直卡在 伫列 queue 不动,也许你的 sidekiq 跟 redis server 有版本不符的问题。
https://ithelp.ithome.com.tw/upload/images/20201011/20120868xdDx8Ea6U1.png
在终端机输入 heroku logs -t 寻找是否有错误
https://ithelp.ithome.com.tw/upload/images/20201011/20120868x4Um7OlCAp.png
可以看出因为版本太旧, Redis To Go 不能用了。解决办法是必须换成 Heroku Redis,因为 Heroku Redis 目前提供的预设版本是 Redis 5.0,符合目前 Sidekiq 的要求。
https://ithelp.ithome.com.tw/upload/images/20201011/20120868g4QKavxQ2O.png

第二步: 设定环境变数

从 gandi 取得 SMTP 以及帐号、密码资讯之後,再修改 production.rb 的设定档,便可以利用 gandi 的 SMTP 服务器寄信。 当然帐号及密码都是需要利用环境变数存放,可以试试 figaro 来设定你自己的环境变数。
https://ithelp.ithome.com.tw/upload/images/20201011/201208686kPrsvFSOw.png

  config.action_mailer.default_url_options = { host: 'http://localhost:3000' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: ENV['smtp_address'],
    port: 587,
    domain: '[email protected]',
    user_name: ENV['smtp_username'],
    password: ENV['smtp_password'],
    authentication: 'plain',
    enable_starttls_auto: true
  }

在 dashboard 上点选 Settings 页面,再点选 Reveal Config Vars 。接着我们需要把 SMTP address以及帐号、密码资讯新增到 Heroku 如下图。
https://ithelp.ithome.com.tw/upload/images/20201011/20120868ZvvL0lFYqr.png

第三步: 新增 Procfile

在 rails root 建立 Procfile 及输入以下指令

# root
bundle exec sidekiq -q default -q mailers

“ Heroku apps include a Procfile that specifies the commands that are executed by the app on startup. You can use a Procfile to declare a variety of process types, including: ” 截自 Heroku Dev Center

完成以上三个步骤就大功告成了!

参考资料:

mperham/sidekiq
Rails background workers
用 Sidekiq 处理 Background Job
#366 Sidekiq


<<:  今年我想陪着 30 天之 26

>>:  etcd 元件浅解

Day 2 set up

今天要来介绍一下如何 set up TypeScript! 请先到 TypeScript 的官网然後...

Day 3 : HTML - 快速打出HTML的代码,超好用的Emmet语法!

想必大家都有这个困扰 如果今天要叫出10个div、再宣告不同的class 就要一直反覆的输入div、...

Day 26 (Js)

1. = =是判别左右相等为真 != 是判别左右不相等为真 2.function同名字,会执行後面的...

【18】GlobalAveragePooling 与 Flatten 的差异与比较

Colab连结 今天要探讨的主题在模型从CNN Layer 转变成 Dense Layer 时,使用...

3.1 Design System - 管理平台

万事起头难 爬山一开始总会比较喘、比较累 但逐渐靠近山头後 身体就慢慢适应环境了 登山者也较能欣赏...