Der*_*rek 7 capistrano ruby-on-rails
Capistrano中的current_path和release_path路径变量有什么区别,如
task :path do
on roles :app do
puts "Release path: #{release_path}"
puts "Current path: #{current_path}"
end
end
Run Code Online (Sandbox Code Playgroud)
是否current_path总是包含最新的代码?
既然没有令人满意的答案,我将补充发现的内容。
查看此博客文章,我们可以看到路径变量指向的位置:
current_path – deploy_to + current_dir的路径(例如/ u / apps / example / current)release_path – releases_path + release_name的路径(例如/ u / apps / example / releases / 20100624000000)
因此,回答您的问题:是的,current_path的确指向最新代码(最新部署)。它在此处通过符号链接指向最新的发行目录。如果您对所有文件夹的含义感兴趣,请查看capistrano结构。
与的不同之处release_path在于,它指向您当前正在部署的发行版的路径。如果要在部署过程中引用存储库中的文件(例如运行脚本),这将很有用。
但是,release_path仅在deploy:starting名称空间期间更新,在任何其他时间,它与完全相同current_path。有关更多信息,请参见此github问题。
我的具体使用情况是我想要一个运行composer install使用的composer.phar多数民众赞成设在我的回购协议的根源。因此,按照文档进行操作:
SSHKit.config.command_map[:composer] = "#{release_path}/composer.phar"
Run Code Online (Sandbox Code Playgroud)
但这没有用,因为在定义此时间时,它release_path仍指向current_path。
我为此找到的解决方法来自以下答案,并且release_path懒惰地进行评估:
SSHKit.config.command_map[:composer] = lambda { "#{release_path}/" + fetch(:src_path) + "/composer.phar" }
Run Code Online (Sandbox Code Playgroud)
因此,只要在deploy:starting命名空间之后访问变量,release_path就可以按照我们的期望进行设置。
anu*_*sha -2
每次使用 Capistrano 部署 Rails 应用程序时,都会创建一个新目录,并在Releases目录中使用较新的版本作为文件名。该目录包含最新的代码。并且current symlink directory将指向最新创建的目录来运行应用程序。
rake、bundle 等任务将在创建单独目录的共享路径目录上运行
rollback我们可以使用如下命令恢复发布
cap deploy:rollback # capistrano 2
cap stage_name rollback #capistrano 3
Run Code Online (Sandbox Code Playgroud)
希望对您有帮助。
| 归档时间: |
|
| 查看次数: |
6027 次 |
| 最近记录: |