2017-08-02 38 views
0

我正在执行一个任务,该命令运行缓慢composer install命令之前current符号链接被更改为指向新版本(因为我不希望我的新版本是在包装被取出的同时,在生命的第一分钟破碎)。Capistrano:部署之前:发布的hook需要知道发布目录

before 'deploy:publishing', :composartisan do 
    on roles(:app) do 
     within fetch(:latest_release_directory) do 
      execute "cd #{current_path} && composer dump-autoload && composer install && php artisan storage:link && php artisan migrate" 
     end 
    end 
end 

这不起作用,因为fetch(:latest_release_directory)返回当前的版本,而不是我们正在建设一个和即将发表在几分钟的时间。

如何获取正在构建的版本的文件夹路径?

回答

0

我自己找到了解决方案。我需要改变两行:

  • within fetch(:latest_release_directory)成为within release_path
  • cd #{current_path}成为cd #{release_path}

下面是完整的工作片段...

before 'deploy:publishing', :composartisan do 
    on roles(:app) do 
     within release_path do 
      execute "cd #{release_path} && composer dump-autoload && composer install && php artisan storage:link && php artisan migrate" 
     end 
    end 
end 

位夸大其词,但为什么在Capistrano网站上没有真正记录?我偶然发现我的解决方案,同时在StackOverflow上浏览其他Capistrano问题。现在我回头看我看release_path只在部署中提到过一次:还原部分的回滚页面http://capistranorb.com/documentation/getting-started/rollbacks/#deployreverting)。列出并解释所有可用变量的页面对我来说似乎是一个基本要素。

[不是一个后座司机谁在开源的母狗,我会尽力叉的文件,并修复它自己,当我觉得我的Capistrano的技能是忍者足够可靠地写下来。]

</rant >