2010-06-29 56 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

相關問題