部署 记一次 capistrano 异常及其引发的思考

netqyq · 发布于 2017年04月05日 · 最后由 netqyq 回复于 2017年04月06日 · 421 次阅读
E40b21

缘起

记得上一次线上部署是3月29日,使用cap production deploy,没有什么问题,顺利部署。

今天跟新了几行代码,没动capistrano相关的部分,执行部署命令,居然直接abort异常退出了!百思不得其解。

报错如下:

(Backtrace restricted to imported tasks)
cap aborted!
Don't know how to build task 'start' (see --tasks)

Tasks: TOP => production
(See full trace by running task with --trace)

找原因

加上--trace看了一下,没找到明显的提示。

只好祭出google了。搜索一下关键字,看了几条结果,好像不搭边。再精确提炼一下关键字。

从报错中提取一行关键信息,Don't know how to build task 'start' (see --tasks),去掉后面的(see --tasks),因为原则上尽量不要给搜索引擎增加处理特殊符号的负担,再加上主题词capistrano, 因为主要是它的问题。

最终的搜索关键字如下:

capistrano Don't know how to build task 'start'

这样的话问题逻辑上就会被限定死。如果这样没有结果,搜索这条路子就至此了。

果然,看到第三条,还是stackoverflow,有人说了

Add install_plugin Capistrano::Puma into your Capfile after require 'capistrano/puma'.

capistrano3-puma moved to 3.0 a few days ago. This line is required for loading default puma tasks in this version.

See https://github.com/seuros/capistrano-puma#usage

解决方法

特别是再看到moved ... a few days ago时,心中一阵喜感,觉得有希望了。

试一下再Capfile中加入

install_plugin Capistrano::Puma

执行bundle后,再运行部署命令就正常了。

总结思考

  1. 搜索时关键字选取很重要。 尽量去除一些介词、连词、语气词,去除特殊符号。因为在后台处理时这些也是要先去掉的,加上以后反而会给搜索引擎增加负担,从而降低准确率,不如我们先人工过滤一遍。

  2. 如何避免类似事件? 考虑真正的原因,本地相关代码都没动,唯一动的就是执行了几遍bundle命令,这样应该会把相关库一些最新代码同步下来,而配置没有自动同步下来,引发错误。由于这里gem中没有指定版本,这样的话会是使用最新的吧。

当然了,没用注意到Capistrano::Puma的更新,没有跟上社区脚步。

心中默默地再次感谢大学时教搜索引擎课程的老师,当然了还有伟大的搜索引擎!

可现在,细思极恐。。

共收到 4 条回复
2455

嗯嗯,最近也遇到这个。刚想总结,就看到也有进坑哈😀

Eda824

capistrano3-puma从2到3是个大版本升级,当然需要看一下Usage,如果看一下的话,其实这个问题根本就不应该说是诡异异常。

27349

今天也入坑

添加
install_plugin Capistrano::Puma
E40b21

@ericguo 多谢!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册