Capistrano-在部署期间在非部署服务器上执行非部署操作

时间:2018-09-24 21:07:53

标签: ruby-on-rails capistrano capistrano3

我想做什么

我有一个使用YARD记录的Rails应用程序。当我使用Capistrano将Rails应用程序部署到其应用程序服务器( AS )时,我还想将YARD生成的HTML文档上传到“文档服务器”( DS )—运行nginx Web服务器的准系统机器;与 AS 完全分开。

问题

我可以在Capistrano中使用简单的字符串变量轻松地做到这一点。像这样:

set :doc_user, 'user'
set :doc_sever, 'my.server.com'

task :yard do
  run_locally do
    execute 'yardoc -q'
    command = "rsync -aqzP doc/ #{fetch(:doc_user)}@#{fetch(:doc_server)}:~/doc"
  end
end

但是我认为这看起来不太像Capistrano,所以我想使用服务器/角色和正确的Capistrano语法来做到这一点。我什至尝试了一个非常简单的任务,例如:

role :yard, %w{user@my.server.com}
server 'my.server.com', user: 'user', roles: %w{yard}

task :yard do
  on roles(:yard) do
    execute 'hostname; uptime'
  end
end

但是Capistrano似乎将此服务器解释为另一个将应用程序部署到的 AS 。仔细阅读Capistrano's documentation的每一页之后,我仍然不知道如何完成这样的简单任务。

我想念什么?

0 个答案:

没有答案