2010-07-13 46 views

回答

1

對於這種類型的配置文件,它包含的東西,取決於環境(開發,測試,運行,生產,... ),我通常在每個環境中使用一個文件,並且都致力於源代碼管理。

例如,我可以有:

  • databases.yml ==開發版本,當項目從源代碼控制簽出在開發計算機上,將工作。
  • databases.testing.yml
  • databases.staging.yml
  • databases.production.yml


然後,構建.tag.gz(或類似)將被部署到不同的環境存檔時,我複製對應的文件目的地的默認值。

例如,創建將部署在生產服務器上的存檔時,我將databases.production.yml複製到databases.yml的存檔中。

這樣,應用程序始終使用databases.yml,無論它部署在什麼環境 - 所有可能的配置都被委託給源代碼控制。


當然,這種效果要好得多,如果你有一些包裝/構建過程 - 而且不只是用手通過FTP上傳文件到服務器...

+0

感謝您的快速回復。你的信息是有用的,但不是在這個特定的情況下。我正在尋求一種方法來在本地覆蓋版本控制的databases.yml,而我正在開發..對於部署它不是一個問題來編輯它,並把正確的值。 – gnrfan 2010-07-13 18:46:40

+0

好吧,在開發時,我使用默認的databases.yml,它在源代碼控制下 - 不需要重寫任何東西,這種方式*(並且不承擔任何不應該承擔的風險)* – 2010-07-13 18:50:34

+0

這個想法因爲我也用Django進行開發。由於settings.py只是一個Python模塊,您最終試圖導入local_settings.py文件,如果它已成功導入,則會將本地更改應用於配置。當然,settings.py是版本控制的,local_settings.py未版本控制。我正在尋找類似的東西。 – gnrfan 2010-07-13 18:57:09

0

我一般添加database.yml到svn:忽略,而是提交database.yml.sample。

本地會將database.yml.sample複製爲database.yml並添加它們自己的值。

這樣database.yml文件不能被意外提交。