2012-10-29 48 views
5

開發和生產之間的一個常見模式是開發網站將使用sqlite,因爲它是零設置,但然後在生產中使用PostgresSQL或MySQL。但是,在由Yesod生成的默認Settings.hs腳手架文件中,僅指定了一個持久性後端。有沒有辦法讓開發配置使用一個持久的後端,而生產配置是另一個?此外,這些應該有不同的數據庫設置YAML文件,以便爲sqlite配置簡單的文件名,但生產數據庫憑證永遠不會觸及VCS存儲庫。Yesod多個持久性後臺爲一個站點

回答

1

我一般不喜歡這種做法,因爲數據庫引擎之間可能存在細微的差異,直到生產才顯示出來。 (這可以通過在中間存在一個臨時服務器來緩解。)

無論如何,您當然可以通過條件編譯來做到這一點,儘管腳手架站點並非設計用於開箱即用。只需查找引用特定後端的所有地方,並將其作爲發展CPP變量的條件。

+1

特別是,您想要更改後端/ Application.hs(包含yml文件)和後端/ Settings.hs(導入和PersistConfig定義)。示例提交:https://github.com/ezyang/hpd3js/commit/1816033db4973d89d6454f8b9f4ecb2806e84432 –