2011-01-25 45 views
0

我有一個與Capistrano部署的Rails應用程序,並且在我們的Acceptance環境中,我想設置頁面標題以包含當前部署的分支。如何在Capistrano和Rails之間發送變量?

該分支設置爲通過Capistrano進行部署,我希望以某種方式將該信息從Cap遷移到Rails。

很顯然,我可以讓Cap將分支名稱寫入文件並在Rails中讀回,但我希望有更好的解決方案。

我已經嘗試了一些設置default_environment的實驗,但這似乎並沒有工作我假設因爲這些環境變量只存在於Capistrano創建的shell中。

有什麼建議嗎?

回答

0

很顯然,我可以得到蓋到了寫 分支名的文件,並在Rails的閱讀 回

這是最好的方式,IMO

0

這裏的一種方式,沒有按」即使需要Capistrano,雖然它確實需要git。通過在Rails初始化運行一個git命令捕獲輸出讀取分支名稱:

# config/initializers/set_title.rb 
module MyConfig 
    TITLE = `git symbolic-ref HEAD`.chomp.split("/").last 
end 

然後,只需指定在你的模板:

<title><%= MyConfig::TITLE %></title> 
+0

是的,我曾想過類似的東西太多,但問題在於我總是以「部署」的分支結束。我不確定這是否是使用Capistrano進行部署的工件,或者是否與使用Github的部署密鑰有關。 –

+0

啊,你說得對。它在部署時必須創建一個新分支。您可以嘗試從'git log --decorate'抓取輸出的第一行,看起來它具有分支名稱和來自遠程回購的標籤名稱。或者,也許git有另一種方法來做到這一點。 – zetetic

+0

有趣。它看起來可能不一定是一致的,但值得一看。謝謝。 –