2012-01-30 93 views
2

我們的capistrano設置爲:使用普通用戶的ssh,但部署到需要使用sudo權限創建文件的位置。capistrano使用sudo運行內部命令

我想使用sudo運行特定的capistrano命令run "cd #{configuration[:releases_path]} && #{decompress(remote_filename).join(" ")} && rm #{remote_filename}"。有沒有一種乾淨的方式可以搭上它?

def distribute! 
    upload(filename, remote_filename) 
    run "cd #{configuration[:releases_path]} && #{decompress(remote_filename).join(" ")} && rm #{remote_filename}" 
end 

回答

4

我相信你可以使用capistrano內的「sudo」功能,例如,

def distribute! 
    upload(filename, remote_filename) 
    sudo "cd #{configuration[:releases_path]} && #{decompress(remote_filename).join(" ")} && rm #{remote_filename}" 
end 
+0

謝謝,我可以某種方式覆蓋'分發!'方法而無需修改代碼? ('sudo cd' dosent work)。 – 2012-01-30 23:47:39

0

以下解決方法使其工作。

task :self_own_dirs do 
    sudo "chown -R #{user} #{releases_path}/.." 
end 

before 'deploy:update_code', 'deploy:self_own_dirs'