程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Capistrano 3:任务大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Capistrano 3:任务?

开发过程中遇到Capistrano 3:任务的问题如何解决?下面主要结合日常开发的经验,给出你关于Capistrano 3:任务的解决方法建议,希望对你解决Capistrano 3:任务有所启发或帮助;

我正在尝试在部署任务后将此 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 进行部署,而是主要使用 docker。

大佬总结

以上是大佬教程为你收集整理的Capistrano 3:任务全部内容,希望文章能够帮你解决Capistrano 3:任务所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: