2014-05-19 48 views
5

特別是,對於測試用例,我希望保持測試數據庫的獨立性,以便測試用例不會干擾開發或生產數據庫。如何在Play中保留獨立的開發,測試和產品數據庫! 2框架?

什麼是分離開發,測試和生產環境的良好實踐?

EDIT1:有些情況下

在Ruby on Rails的,有按照慣例不同的環境不同的配置文件。 Play也是如此! 2還支持?

或者,我必須煮配置文件,然後編寫一些粘合代碼,選擇適當的配置文件?

目前如果我運行sbt test它使用開發數據庫(在conf/application.conf中配置爲「default」)。不過,我希望Play!2使用不同的測試數據庫。

EDIT2:在那玩提供的命令

對於玩遊戲! 2框架,我觀察到了這一點。

$ help play 
Welcome to Play 2.2.2! 

These commands are available: 
----------------------------- 
...OUTPUT SKIPPED... 
run <port>     Run the current application in DEV mode. 
test      Run Junit tests and/or Specs from the command line 
start <port>    Start the current application in another JVM in PROD mode. 
...OUTPUT SKIPPED... 

有三個爲「測試」,「發展」和「生產」的情況下,這是明確的命令:

  • test:此運行測試用例。所以它應該自動選擇test配置。
  • run <port>:在指定的port上運行development實例。所以這個命令應該自動選擇development配置。
  • start <port>:這將在指定的port上運行production實例。所以這應該自動選擇production配置。

但是,所有這些命令都會選擇conf/application.conf中提供的值。我覺得在這裏可以填補一些空白。

如果我錯了,請糾正我。

EDIT3:最好的辦法是使用Global.scala

說明如下:How to manage application.conf in several environments with play 2.0?

+0

不同的配置文件?你的問題有點過於通用。 – vptheron

+0

我剛剛更新了「某些上下文」的問題。 – tuxdna

+0

雖然你的編輯已經幫助澄清你正在尋找這個問題現在看起來更像是一個重複http://stackoverflow.com/questions/10391987/how-to-set-up-different-databases-per-環境在發揮2-0 – Exupery

回答

1

好的做法是保持在不同的文件夾中的不同應用程序實例和synching他們即通過混帳回購協議。

當您想保留單個實例時,您可以爲每個環境使用alternative configuration file

+1

我認爲「替代配置文件」方法看起來不錯。但是,理想情況下,我希望「sbt測試」自動選擇「測試」配置。 – tuxdna

+1

通常我只是創建shell腳本進行,像'dev.sh','prod.sh'等。另外即使用理念與播放支持,你可以只創建獨立運行CONFIGS – biesior

+2

我發現這種方法最適合的是:http:/ /stackoverflow.com/a/15937831/1119997 – tuxdna

0

在您的application.conf文件中,您的數據庫有一個或多個條目,例如,db.default.url=jdbc:mysql://127.0.0.1:3306/devdb

conf文件可以使用${?ENV_VAR_NAME}語法讀取環境變量,因此將其更改爲db.default.url=${?DB_URL}之類的內容並使用環境變量。

+0

播放支持額外的配置文件重寫唯一入選CONFIGS,它正式記錄在案 – biesior

+0

@biesior對不起,我對您的評論困惑,我的回答沒有提及額外的配置文件 – Exupery

+0

什麼只是想說這是沒有必要設置環境變量 - 其他配置文件更舒適,尤其是當你有更多的配置取決於選擇的環境 – biesior

0

更簡單的方法來完成這件事和管理您的配置更加容易經由GlobalSettings。有一種方法可以覆蓋,名稱是「onLoadConfig」。嘗試API_LINK

基本上在你的conf /項目文件夾查看其API,您類似的設置以下:

conf/application.conf --> configurations common for all environment 
conf/dev/application.conf --> configurations for development environment 
conf/test/application.conf --> configurations for testing environment 
conf/prod/application.conf --> configurations for production environment 

所以用這個,你的應用程序知道該配置爲您的特定環境模式下運行。對於我的執行上onLoadConfig代碼片段嘗試檢查我的文章在我blog post

我希望這是有幫助的。

+0

無論誰downvoted,請解釋爲什麼這是一個不好的方法。 – SilentDirge

相關問題