最近部署的时候,发现 capistrano-sidekiq 失败了,最后发现是 sidekiq 已经升级到了 6.0. 而默认情况下是依赖 daemon 模式的
似乎 sidekiq 作者是强调 sidekiq 应该是使用 systemd 或者 upstart 来处理这种 daemon 模式,并且认为 类似 puma 也应该这么干
capistrano-sidekiq 其实也提供了 systemd 的方式
只需要
于是乎 就会在 USERNAME/.config/systemd/ 中创建 sidekiq.ENV.service , 由于已经执行了 loginctl enable-linger USERNAME, 则会加载这块
这个地方 我遇到了 2 个小坑
坑 1: 生成的这个配置 service name 就是 sidekiq . 如果你跟我一样一台机器跑了其他的 sidekiq , 则需要使用 set service_unit_name 指定下特殊的名称
坑 2: 因为我服务器也使用了 rvm, 所以导致了 模板生成的 ExecStart 的路径不对 所以需要修改下 set :bundler_path
懒得折腾的同学,也可以等 capistrano-sidekiq 更新。
capistrano-sidekiq 的作者说,"最近一个星期将修复 sidekiq 6.0 的问题", 然而 14 天已经过去了.....
最后,根据 sidekiq 的作者的说法 每一个开发者都需要掌握 systemd 这种方式。而对于我来说,多了解下也不是啥坏事
当然一把梭解决问题 就是改 gemfile
gem 'sidekiq', '< 6.0'
之后 bundle update sidekiq 就啥都不用改了