2010-06-29 71 views
5

我正在使用capistrano来部署我的Ruby on Rails项目。我在Dreamhost VPS上,自从几周前,在Capistrano或乘客身上没有变化的时候,我开始体验到一个奇怪的部署问题:部署:capistrano上的符号链接将“当前”目录指向先前版本

每当capistrano部署我的应用程序时,符号链接(默认情况下调用)应将“当前”目录指向最新版本。尽管新版本已正确部署到“发布”目录,但问题在于“当前”符号链接始终设置为以前版本,而不是新版本。所以我可以部署应用程序,但我总是必须连续运行部署两次。

你可以在这里看到Capistrano的日志: http://img715.imageshack.us/img715/7803/capistranoproblemb.png

有其他人经历过这样或能帮助我解决呢?

谢谢!

回答

6

我用一个额外的部署任务来解决这个问题,该任务使用不同的内部变量名称和正确的路径到最新版本(release_path而不是latest_path或类似的东西)重新创建符号链接。


namespace :deploy do 
    desc "Recreate symlink" 
    task :resymlink, :roles => :app do 
    run "rm -f #{current_path} && ln -s #{release_path} #{current_path}" 
    end 
end 

after "deploy:create_symlink", "deploy:resymlink", "deploy:update_crontab" 
+4

在最新的Capistrano中,它是'deploy:create_symlink'而不是'deploy:symlink'。 – manafire 2012-10-10 20:56:18

+2

请将接受的答案更改为@knocte给出的答案。上面的kludge可能有效,但它是一种代码味道。 – JellicleCat 2014-03-12 15:52:27

+0

@JellicleCat:你使用的是什么版本的capistrano? – knocte 2016-09-21 17:50:26

6

我认为@ foresth的答案不是一个好的解决方案。

我想会发生什么,你正在体验capistrano的this horrible bug

在上班的路上,周围的错误是:不读latest_release变量的任务deploy发生了。

+0

这应该是被接受的答案。根据这个错误调整我的自定义任务解决了这个问题。 – brendan 2013-11-01 19:54:05

+0

@brendan:你用什么版本的capistrano重现错误?他们问我在github的问题,我链接... – knocte 2013-11-05 00:32:29

+0

看起来像是2.15.4 @knocte – brendan 2013-11-15 23:04:08

相关问题