【问题标题】:Set default stage with Capistrano 3使用 Capistrano 3 设置默认阶段
【发布时间】:2014-01-27 05:11:10
【问题描述】:

有没有办法在 Capistrano 3 中设置默认阶段?

我尝试将set :stage, :production 放入 deploy.rb 中,但没有成功,它给出了错误:

Stage not set, please call something such as `cap production deploy`,
where production is a stage you have defined

我现在只有一个阶段,所以我希望能够运行 cap deploy 并让它在默认情况下执行。

【问题讨论】:

  • 我今天要添加同样的问题,但我想我找不到一些基本的、明显的选项,不幸的是,它似乎不是那么明显(真的很奇怪),而且几乎没有关于 v3 的文档。

标签: ruby-on-rails ruby capistrano


【解决方案1】:

capistrano 3.6+ 的新答案: 最好使用invoke :production unless Rake.application.options.show_tasks 来避免使用cap -T 时会收到的警告

【讨论】:

  • 必须将其添加到 Capfile 的末尾而不是开头。
【解决方案2】:

旧的解决方案在 Capistrano 3 中适用于我:

cap --version
#=> Capistrano Version: 3.3.5 (Rake Version: 10.4.2)

在这些行之后的Capfile 的最顶部

# Load DSL and Setup Up Stages
require 'capistrano/setup'

添加:

set :stage, :production

然后在没有指定阶段的情况下照常运行您的任务:

cap foo:bar

【讨论】:

  • cap foo:bar 是什么意思?
  • 这只是一个任务的示例名称。例如示例 (!),它可以是 cap deploy:migratecap cache:clear
【解决方案3】:

您可以将以下行添加到您的 deploy.rb,这将阻止 Capistrano 期待一个阶段:

set :stages, ["production"]

【讨论】:

    【解决方案4】:

    cd进入RAILS根目录后,发出命令:

    cap development deploy

    似乎有效。早些时候我在 app/models 文件夹中,发出命令时返回此错误:

    Stage not set, please call something such as cap production deploy, where production is a stage you have defined.

    【讨论】:

      【解决方案5】:

      Capistrano v3 在某种程度上是 Rake 的封装,因此您需要意识到真正发生的事情是首先运行 production 任务,然后是 deploy 任务。

      如果你稍微调试一下,你会发现deploy.rb 在你不输入阶段时不会被加载。这是因为阶段的任务是加载deploy.rb 的位置:查看lib/setup.rb,为每个阶段定义了一个任务。运行时,stage 的任务设置 :stage,加载 capistrano 默认值,最后加载您的 deploy.rb 文件。

      因此,一个简单的技巧是告诉 Capistrano 在您每次运行 cap 时调用舞台任务,方法是将其添加到您的 Capfile 的末尾(不是您的 deploy.rb) :

      Rake::Task[:production].invoke
      

      或者,使用 Capistrano 的 DSL 中的 invoke 方法:

      invoke :production
      

      如果您确实使用了多个阶段,这可能会产生一些意想不到的后果,但如果您只使用过production 阶段,它应该可以正常工作。

      另一个简单的解决方案可能是一个简单的 shell 别名,例如 alias cap='cap production',但如果您有多个具有不同阶段名称的项目,它可能效果不佳。

      【讨论】:

      • 谢谢,这很有帮助。我以前从未使用过 Rake,但认为阅读 Rake 文档以更好地理解 capistrano 3 可能会有所帮助。
      猜你喜欢
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 2013-02-21
      相关资源
      最近更新 更多