gpt4 book ai didi

ruby - 你如何在 Capistrano 中为不同的角色定义不同的相同任务?

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:46 28 4
gpt4 key购买 nike

我正在使用 Capistrano 来处理我的部署,我在我的设置中有两个不同的角色 - :web 和 :processing。它们都有通常的 :deploy 任务,但 :restart 任务对于两种类型的服务器需要不同。

所以我的第一次尝试是这样的:

task :restart, :roles => :web do
run "... web related restart stuff ..."
end

task :restart, :roles => :processing do
run "... processing related restart stuff ..."
end

这不起作用,因为第二个 :restart(对于 :processing 角色)替换了第一个 :restart(对于 :web 角色),而 :web :restart 永远不会发生。

我快速浏览了一下,看看是否可以根据任务运行时服务器可能处于的角色(或多个角色)编写条件代码,但几乎没有关于此类事情的文档。有什么想法吗?

最佳答案

你应该使用命名空间:

namespace :web do
desc "Restart web servers"
task :restart, :roles => :web do
# Restart Magic Here
end
end

namespace :process do
desc "Restart process servers"
task :restart, :roles => :process do
# Restart magic here
end
end

# Optionally:
task :restart do
web.restart
process.restart
end

我想这就是您要找的!

此外,要在命令行上使用它们,您可以使用

$ cap <stage>           # (if using multistage)
$ cap web:restart # Restarts web servers
$ cap process:restart # Restarts process servers
$ cap restart # Restarts both process and web servers

(来源:我是 Capistrano 的维护者。)

关于ruby - 你如何在 Capistrano 中为不同的角色定义不同的相同任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3447025/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com