gpt4 book ai didi

ruby-on-rails - Capistrano 中 current_path 与 release_path 的区别?

转载 作者:行者123 更新时间:2023-12-04 06:23:43 25 4
gpt4 key购买 nike

current_path 之间有什么区别?和 release_path Capistrano 中的路径变量,如

task :path do
on roles :app do
puts "Release path: #{release_path}"
puts "Current path: #{current_path}"
end
end
current_path总是包含最新的代码?

最佳答案

由于这没有得到令人满意的答案,我将添加我发现的内容。

this blog post我们可以看到路径变量指向的位置:

current_path – path of deploy_to + current_dir (e.g. /u/apps/example/current ) release_path – path of releases_path + release_name (e.g. /u/apps/example/releases/20100624000000 )



所以回答你的问题:是的, current_path确实指向最新的代码(最新的部署)。它通过符号链接(symbolic link)指向最新版本目录。看看 capistrano structure如果您对所有文件夹的含义感兴趣。

release_path 的区别是它指向您当前正在部署的版本的路径。如果您想在部署期间引用存储库中的文件(例如运行脚本),这很有用。

但是, release_path仅在 deploy:starting 期间更新命名空间,其他任何时候都和 current_path完全一样.
看到这个 github isssue了解更多信息。

我的特殊用例是我想运行 composer install使用 composer.phar它位于我的仓库的根目录中。所以,关注 the documentation我这样做了:

SSHKit.config.command_map[:composer] = "#{release_path}/composer.phar"

但这不起作用,因为在定义时, release_path仍然指向 current_path .

我找到的解决方法来自 this answer它是评估 release_path懒洋洋:

SSHKit.config.command_map[:composer] = lambda { "#{release_path}/" + fetch(:src_path) + "/composer.phar" }

所以只要在 deploy:starting 之后访问变量命名空间, release_path将按照我们的预期设置。

关于ruby-on-rails - Capistrano 中 current_path 与 release_path 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24275425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com