【问题标题】:How to run a default task in Capistrano 3?如何在 Capistrano 3 中运行默认任务?
【发布时间】:2014-04-27 01:22:25
【问题描述】:

由于缺乏文档,我求助于阅读 Capistrano 2 hanbook 并遇到了“默认”任务。

例子:

namespace :backup do

  task :default do
    web
    db
  end

  task :web, :roles => :web do
    puts "Backing Up Web Server"
  end

  task :db, :roles => :db do
    puts "Backing Up DB Server"
  end

end

这个想法是,如果我运行cap backup,它应该执行默认任务..这似乎不起作用。

我的代码修改为适合上述情况:

namespace :status do

task :default do
        webserver
        db
end


desc "Check status of nginx on web server"
    task :webserver do
        on roles(:web) do |host|
            execute 'hostname'
            execute 'service nginx status'
        end
    end


desc "Check status of DB"
 task :database do
     on roles(:db) do |host|
        execute 'hostname'
        execute 'service postgresql status'
     end
 end


end

如何在 Capistrano 3 中运行默认任务?

【问题讨论】:

    标签: capistrano capistrano3


    【解决方案1】:

    在命名空间之外创建一个任务,并将该任务命名为与您的命名空间相同。定义这个任务依赖于你在命名空间中的 :default 任务

    namespace :status do
      task :default do
        puts "Hello Default-Task!"
      end
    
    end 
    
    task :status => "status:default"
    

    当您在 Capistrano 3 中使用 Rake 时,您可以使用该 Rake 技巧。

    【讨论】:

    • 我遵循了您的代码,但出现以下错误:NameError: undefined local variable or method webserver' for main:Object`
    • 嗨,我没有复制你所有的代码,所以没有定义名为“webserver”的任务。你必须这样做。或者最适合测试目的。只需用“puts 'hello world'”替换对“webserver”和“db”的调用
    猜你喜欢
    • 1970-01-01
    • 2019-04-13
    • 2014-07-12
    • 1970-01-01
    • 2016-09-24
    • 2010-09-23
    • 2015-12-24
    • 2016-02-03
    • 2023-04-07
    相关资源
    最近更新 更多