【问题标题】:How can I run rake with --trace within capistrano?如何在 capistrano 中使用 --trace 运行 rake?
【发布时间】:2023-12-23 01:57:01
【问题描述】:

我希望 capistrano 使用 --trace 调用 rake,以便找出失败的原因。我该怎么做呢? set :rake 'rake --trace' 不起作用。

【问题讨论】:

  • 当你说“不起作用”时,会发生什么?

标签: ruby rake capistrano


【解决方案1】:

我发现的最好方法是:

set :rake, "#{rake} --trace"

这样您就不会覆盖 rake 变量。

例如,如果您使用 bundler,则之前设置为:

"bundle exec rake"

之后:

"bundle exec rake --trace"

【讨论】:

    【解决方案2】:

    您的自定义任务可能没有使用 rake 变量,而是使用硬编码 rake,这是一个示例:

    run("rake sass:compile")
    

    这是硬编码的,不会关心你的设置set :rake, 'rake --trace',这是正确的方法:

    run("#{fetch(:rake)} sass:compile")
    

    或者,简写:

    run("#{rake} sass:compile")
    

    您可以在 Capistrano 源代码的实践中看到这一点,在默认配方实际调用 rake 的地方,在迁移任务中:https://github.com/capistrano/capistrano/blob/master/lib/capistrano/recipes/deploy.rb#L387

    【讨论】:

    • 奇怪的是,迁移是我的部署失败的地方,我想打开 --trace,所以我想应该可以工作......