2012-01-30 95 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'