Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Capistrano 3.x中使用sudo创建符号链接_Ruby On Rails_Capistrano - Fatal编程技术网

Ruby on rails 在Capistrano 3.x中使用sudo创建符号链接

Ruby on rails 在Capistrano 3.x中使用sudo创建符号链接,ruby-on-rails,capistrano,Ruby On Rails,Capistrano,我正在使用Capistrano3部署Rails应用程序。我一直在努力,但是现在当一切都快完成时,我无法通过Capistrano任务创建一个符号链接 有了Capistrano 2.x,我可以很容易地通过以下几行实现: sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}" 现在Capistrano3已经提倡了无密码sudo方法 我已将以下行添加到sudoers deploye

我正在使用Capistrano3部署Rails应用程序。我一直在努力,但是现在当一切都快完成时,我无法通过Capistrano任务创建一个符号链接

有了Capistrano 2.x,我可以很容易地通过以下几行实现:

sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}"
现在Capistrano3已经提倡了
无密码sudo
方法

我已将以下行添加到
sudoers

deployer ALL=NOPASSWD:/etc/init.d/sites-enabled/application-name
并将Capistrano任务中的命令更改为:

execute :sudo, :ln, "-nfs", "#{current_path}/nginx.conf /etc/nginx/sites-enabled/#{fetch(:application)}"
我错过了什么?我添加到
sudoers
的行是否正确


谢谢大家!

Alex,在编辑
sudoers
时,应该列出要执行的命令(而不是要符号链接的文件)

因此,
sudoers
中的行应如下所示:

deployer ALL=NOPASSWD:/bin/ln -nfs /current/path/config/nginx.conf /etc/nginx/sites-enabled/application-name
您还可以使其更通用:

deployer ALL=NOPASSWD:/bin/ln -nfs /current/path/* /etc/nginx/sites-enabled/*
但它将不那么安全