2016-08-17 67 views
1

我正在Rails項目的團隊中工作。不同的本地數據庫配置Rails

我們每個人都有一個本地數據庫用於開發目的。我們遇到了一個問題:每個人對本地數據庫都有不同的配置。當有人提交而不重置/config/database.yml時,由於訪問未配置,因此該團隊的其他成員無法使用其數據庫。

我可以有一個本地配置沒有提交?每個人都可以毫無問題地工作,而無需每次都重新設置文件?有時像Django中的local_settings.py

+0

忽略你的VCS對你不好嗎? – AndreyS

+0

我有更多的配置(如qa,分段配置)。所以我需要共享信息。我不知道我們是否能夠以開發爲目的的本地配置。 – joseglego

+0

你可以用我認爲的環境變量來做到這一點。 – AndreyS

回答

3

您可以通過config/database.yml文件和DATABASE_URL env變種configure the database in Rails。它們合併,但優先於DATABASE_URL

一個好的解決方案是在config/database.yml中檢查一個基本配置,該配置恰好可以支持postgres.app或任何最常見的解決方案。

需要其他設置的開發人員可以設置DATABASE_URL env var來自定義數據庫配置。像figarodotenv這樣的寶石可以使這個更容易。

如果您曾經想知道Heroku如何設法使用正確的數據庫,無論您投入database.ymlDATABASE_URL ENV var如何配置您的生產數據庫。

爲什麼要使用ENV變量而不是更多的數據庫_ *。yaml文件?

十二因子應用商店中的環境變量CONFIG(通常 縮短到ENV瓦爾或ENV)。環境變量易於在 之間進行更改,無需更改任何代碼;不像配置文件,有 他們被意外檢入代碼回購的可能性很小; ,與定製配置文件或其他配置機制(如 Java系統屬性)不同,它們是與語言和操作系統無關的標準。
https://12factor.net/config

+0

這是一個很好的答案。我非常感謝。我以前說什麼都不接受。我花時間說謝謝。並告訴你我們採用了DATABASE_URL的想法。我們正在使用它。 – joseglego

2

config/database.yml添加到您的rails-app的根路徑下的.gitignore文件中。 複製config/database.yml將生產所需的值複製到config/database_example.yml。 現在你可以修改你的本地數據庫,並在生產中複製config/database_expample.ymlconfig/database.yml

如果配置文件被忽略的git,每個人都可以在本地進行更改而不被混帳得到跟蹤。

編輯: 在這裏你可以看到你可以刪除文件跟蹤! Ignore files that have already been committed to a Git repository

+0

只有在您尚未提交config/database.yml時纔有效。忽視Git不會忽略已提交的文件。在我們的系統中,我們甚至沒有檢入database.yml。我們有各種各樣的database.production.yml等等,每個都有佔位符。在部署時,找到正確的版本,並用真實數據替換佔位符(以便該數據無處檢入到我們的回購中)。那麼你可以添加你的本地版本的database.yml到.gitignore,它工作正常。 – jaydel

+0

看起來像一個非常規的配置方法,對於ENV變量處理得更好的問題來說,這是一個非常難解的解決方案。 – max

+0

我同意,ENV變量總是更好。但在這個例子中,我展示瞭如何使用gitignore來改變當前的工作流程。 – DenniJensen

相關問題