2010-01-26 40 views
5

我目前正試圖儘可能地自動化我們的rails應用程序的部署過程,以便CI服務器上的乾淨構建可以觸發測試服務器上的自動部署。如何處理capistrano的一次性部署任務?

但是我遇到了一些與以下情況有關的障礙: 我已經將friendly_id gem添加到應用程序中。有一種遷移可以創建所有必要的表格。但要填充這些表格,我需要調用一個rake任務。

現在,這個rake任務只需要調用一次,所以將其添加到部署腳本將會過度。

理想情況下,我在尋找類似遷移的東西,但不是數據庫,而是應該跟蹤在部署過程中需要調用的腳本。這樣的野獸是否已經存在?

回答

1

我想不出任何你想要的東西,但是如果你只需要能夠以一次性的方式在遠程服務器上運行任務,那麼你總是可以通過capistrano使用rake。

這裏有一個問題:How do I run a rake task from Capistrano?,它也鏈接到這篇文章http://ananelson.com/said/on/2007/12/30/remote-rake-tasks-with-capistrano/

編輯:我想知道是否可以創建一個不會做任何數據庫更改但只調用rake任務的遷移? Rake::Task["task:name"].invoke。值得一試?

+0

當然,我使用遷移來全面更新數據。沒有理由必須更改數據庫模式。 – wesgarrison 2010-01-27 01:57:55

+0

那麼爲什麼不創建一個調用執行你的一次性更改的rake任務的遷移。這應該工作... – jonnii 2010-01-27 02:52:31

+0

哇,我甚至沒有考慮只是使用這種遷移。我總是將「遷移」等同於「數據庫」。 – AGraefe 2010-01-27 08:43:00

1

我認爲運行該rake任務是遷移到使用friendly_id的一部分。當然,你已經創建了桌子,但你還沒有完成!在真正遷移之前,您仍然需要做一些數據更新。

從您的遷移中調用rake任務。它會更新現有的數據,並且將來您的應用邏輯將處理新記錄。