capistrano使用sudo运行内部命令

时间:2012-01-30 20:15:38

标签: ruby-on-rails capistrano

我们的capistrano设置是:ssh与普通用户,但部署到需要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

2 个答案:

答案 0 :(得分:4)

我相信你可以在capistrano中使用“sudo”功能,例如

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

答案 1 :(得分:0)

以下解决方法使其有效。

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

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