Capistrano 3:"find ... -exec ..." 任务中的命令语法
Capistrano 3: "find ... -exec ..." command syntax in task
我正在尝试在部署任务后将此 shell 命令集成到 Capistrano 3 中:
find /var/www/mysite/somepath/ -type d -exec chmod 775 {} \;
但是,我没有使用正确的 Ruby 语法。我已经尝试了最可能的组合:
execute :find, "#{deploy_to}/somepath/ -type d -exec chmod 775 {} \;"
和
execute :find, "#{deploy_to}/somepath/", "-type d", "-exec", "chmod", "755", "{}", ";"
但总是以错误结束:find: missing argument to -exec
任何人都可以帮助我以正确的方式分隔此命令的参数吗?
您使用了错误的命令,:find
是为了使用 ruby 功能,但您想使用 find
的 linux 实用程序。请尝试关注
execute "find /var/www/mysite/somepath/ -type d -exec chmod 775 {} \;"
不要忘记最后我用双斜杠来终止命令。但是使用以下命令还有更好的方法
set :file_permissions_paths, ["app/logs", "app/cache"]
我在我非常老的项目中使用它,如下所示
set :permission_method, :chmod
set :use_set_permissions, true
set :writable_dirs, ["app/cache", "app/logs"]
set :file_permissions_paths, ["app/log", "app/cache", "storage"]
我认为不要对所有内容都设置权限是个好主意,但是当我第一次这样做时我也很困惑很久以前我使用了以下任务,它将彻底完成并根据需要更改所有权限
namespace :deploy do
task :check_permissions do
on roles(:web) do
execute "chmod -R 0777 #{release_path}"
execute "echo 'finished'"
execute " /bin/systemctl restart nginx"
#execute "cd #{deploy_to}/current && /usr/bin/env rake countries:update RAILS_ENV=production"
end
end
end
它有很多东西你可以去掉,然后尝试你想做的。请注意这些是非常旧的代码,即使我不记得它们在做什么,因为我不再使用 capistrano 进行部署,但主要是码头工人。
我正在尝试在部署任务后将此 shell 命令集成到 Capistrano 3 中:
find /var/www/mysite/somepath/ -type d -exec chmod 775 {} \;
但是,我没有使用正确的 Ruby 语法。我已经尝试了最可能的组合:
execute :find, "#{deploy_to}/somepath/ -type d -exec chmod 775 {} \;"
和
execute :find, "#{deploy_to}/somepath/", "-type d", "-exec", "chmod", "755", "{}", ";"
但总是以错误结束:find: missing argument to -exec
任何人都可以帮助我以正确的方式分隔此命令的参数吗?
您使用了错误的命令,:find
是为了使用 ruby 功能,但您想使用 find
的 linux 实用程序。请尝试关注
execute "find /var/www/mysite/somepath/ -type d -exec chmod 775 {} \;"
不要忘记最后我用双斜杠来终止命令。但是使用以下命令还有更好的方法
set :file_permissions_paths, ["app/logs", "app/cache"]
我在我非常老的项目中使用它,如下所示
set :permission_method, :chmod
set :use_set_permissions, true
set :writable_dirs, ["app/cache", "app/logs"]
set :file_permissions_paths, ["app/log", "app/cache", "storage"]
我认为不要对所有内容都设置权限是个好主意,但是当我第一次这样做时我也很困惑很久以前我使用了以下任务,它将彻底完成并根据需要更改所有权限
namespace :deploy do
task :check_permissions do
on roles(:web) do
execute "chmod -R 0777 #{release_path}"
execute "echo 'finished'"
execute " /bin/systemctl restart nginx"
#execute "cd #{deploy_to}/current && /usr/bin/env rake countries:update RAILS_ENV=production"
end
end
end
它有很多东西你可以去掉,然后尝试你想做的。请注意这些是非常旧的代码,即使我不记得它们在做什么,因为我不再使用 capistrano 进行部署,但主要是码头工人。