2

有时,在 Capistrano 部署期间会发生错误,无法提供足够的输出来进行故障排除。例如:

  * executing "cd /apps/my_app/releases/20121019181838 && bundle exec rake RAILS_ENV=dev RAILS_GROUPS=assets assets:precompile"
    servers: ["myserver.com"]
    [myserver.com] executing command
*** [err :: myserver.com] rake aborted!
*** [err :: myserver.com] Connection refused - connect(2)
*** [err :: myserver.com] 
*** [err :: myserver.com] Tasks: TOP => environment
*** [err :: myserver.com] (See full trace by running task with --trace)
    command finished in 2388ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /apps/my_app/releases/20121019181838; true"

在 rake 任务期间出了点问题,看起来它可能与 DB 有关。但是为了解决这个问题,我需要重新创建部署条件;唉,条件已经rm -rf制定。

有什么方法可以让 Capistrano 在这里使用 a beforeor afterhook 掉到(Cap 或 bash)shell 中?--trace有没有一种简单的方法可以在不覆盖 Capistrano 类的情况下将 a 插入到该 rake 任务中?其他想法?

4

1 回答 1

0

我通过以下方式处理此类情况:

  • 当我可以足够快时,我只需点击CTR+Z(它“暂停”上限过程),然后我在现场调查事情(结束ssh,或cap console)。
  • 我在运行任务时设置了 debug ( cap --debug) 标志——这使得 cap 在每个远程命令执行之前提示我,所以我可以在每一步之前/之后调查情况。

这两种方式通常足以让我很快处理大多数情况。希望他们也能帮助你。

于 2012-10-22T14:23:58.407 回答