2014-04-27 40 views
1

由于缺乏文件,我诉诸阅读Capistrano 2 hanbook,并遇到“默认”任务。如何在Capistrano 3中运行默认任务?

例子:

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应该执行似乎task..which不工作的默认。

我的代码修改,以适应上述:

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个默认的任务?

回答

1

在名称空间外创建一个任务,并将该任务命名为与您的名称空间相同的任务。定义这个任务取决于你的:默认的任务,因为你正在使用耙内Capistrano的3,你可以使用耙招的名字空间

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

end 

task :status => "status:default" 

内。

+0

我跟着你的代码,但我得到以下错误:'NameError:未定义的局部变量或方法'网络服务器'为主:对象' – kaizenCoder

+0

嗨,我没有复制所有的代码,所以没有任何名为“网络服务器”定义的任务。你必须这样做。或者最适合测试目的。只需将“webserver”和“db”的调用替换为“puts'hello world'”即可 – robkuz

相关问题