2010-04-24 69 views
2

將種子(初始或測試)數據加載到grails應用程序的最佳方式是什麼?我正在考慮3個選項Grails應用程序的種子數據

  1. 將所有內容放入* BootStrap.groovy文件中。如果域類和測試數據很多,這是很乏味的。
  2. 編寫自定義功能以通過xml加載它。 groovy可以提供優秀的xml支持,但不會太困難,但是對於不同的域類,很多switch語句。
  3. 使用Liquibase LoadData api。我發現你可以很容易地從csv文件加載數據。

選擇3似乎是最簡單的。但是,我不熟悉Liquibase。在這種情況下它好,或者只用於遷移,DB變化等,如果任何人都可以提供更好的溶膠,或點與Liquibase一個例子,這將是很大的幫助..

回答

2

另一個答案是利用Grails的運行腳本。這將允許您移動自舉程序並將其保留在文件系統上的所需位置(可能位於代碼庫之外)。同樣,您可以通過運行的應用程序安裝控制檯插件和加載代碼。

根據您的數據需求,還可以查看偉大的build-test-data插件。

+0

Grails RunScript:但是如果我們想在QA或UAT環境中執行此操作,該方法要求我們在服務器上擁有「grails上下文」,不是嗎? grails run-script需要grails以及服務器中安裝的項目(源代碼),對吧? grails run-script會在grails開發環境之外工作嗎? – arrehman 2012-02-27 23:32:32

+0

在這種情況下,您可能需要查看控制檯或遠程控制插件。使用控制檯插件,您可以在具有完全訪問權限的正在運行的實例上運行腳本或任意groovy代碼。請記住,這應該在生產部署中被禁用或嚴密保護。 – ahanson 2012-03-01 21:25:18

2

我使用Fixtures插件來加載測試/初始數據,它適用於我。

http://www.grails.org/plugin/fixtures

+0

感謝您的指針..我同時決定從xml自己動手。我沒有多少探索,但沒有看到很多的燈具使用示例..是否易於使用一對多,很多很多的場景? – bsr 2010-04-27 20:12:36

0

一種方法是使用的服務。我創建了一個類,我們稱之爲SeederService。我可以在Bootstrap.groovy中注入這個服務並調用我想要的任何方法。

SeederService的美妙之處在於,您還可以在單​​元測試中使用相同的服務。只需在單元測試中注入服務類並生成種子數據。

相關問題