如何从远程服务器本地运行Capistrano任务?

时间:2015-12-27 17:12:40

标签: ruby ssh capistrano resque capistrano3

用例:
假设我定义了Capistrano任务,例如cap resque:start 它需要:set个值,例如deploy.rb中的工作人员数量 假设我想在服务器重启时启动resque worker 我可以将它们复制到一些重新启动后脚本,但如果我更改:set工作量或其他配置,我需要更改重新启动后脚本也是如此。

我们可以在重新启动后脚本中执行cap locally:resque:start,而不会这样做,这将自动获取我们在deploy.rb中设置的当前工作量。

1 个答案:

答案 0 :(得分:0)

  1. Gemfile 中,将:development中的所有Capistrano宝石添加到:production
  2. 创建任务cap locally:resque:start

    namespace :locally do
      namespace :resque do
        task :start do
          run_locally { Rake::Task["resque:start"].execute }
        end
      end
    end
    
  3. 将远程主机添加到远程主机上的authorized_keys(因为即使我们在本地执行任务,Capistrano 3也需要设置阶段。幸运的是,ssh连接到localhost会很快):

    1. ssh-keygen -t rsa
    2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    3. chmod og-wx ~/.ssh/authorized_keys
  4. 现在,在您的远程生产服务器上cap production locally:resque:start