2012-03-05 81 views
3

我想運行一個名爲「local」的自定義環境......就像在本地開發中那樣。在將戰爭部署到「共享」開發服務器之前,我會使用這個配置(例如數據庫連接)。但是我注意到它缺少標準Grails「開發」環境的行爲,例如刷新瀏覽器時無法使用對GSP的更改。定製Grails環境的行爲

所以這讓我想知道你如何改變自定義環境的行爲?如何將「開發」的所有設置複製到另一個環境?

+0

會不「‘共享’開發服務器」更適合作爲自定義環境? – doelleri 2012-03-05 06:24:27

+0

謝謝,是的,實際上這是我現在開始下的路徑,但好奇心現在贏得了我...我需要更好地理解Grails的另一部分...什麼使得發展env不同完全不同,我如何定製這個if需要... – Steve 2012-03-05 08:45:23

回答

1

我不認爲自動重新加載是依賴於環境的。如果您執行grails run-app,則無論您在哪個環境下運行,重新加載都會發生。換句話說,自動重裝將發生於所有的

  • grails dev run-app
  • grails prod run-app
  • grails test run-app

在另一方面,重裝如果你建立一個使用grails war戰爭不會發生,那麼部署它。所以重新加載取決於你如何運行應用程序,而不是環境。定義類似於dev的自定義環境的最簡單方法是定義一組默認配置,然後有選擇地覆蓋每個環境的設置,例如,

//default config 
myApp { 
    userRoleName = 'ROLE_USER' 
    adminRoleName = 'ROLE_ADMIN' 
    dateFormat = 'yyyy-MM-dd' 
} 

environments { 
    // config overrides for dev 
    development { 
     myApp.dateFormat = 'yyyy/MM/dd' 
    } 

    // config overrides for local 
    local { 
     myApp.dateFormat = 'MM/yy/dd' 
    } 
} 
+1

謝謝唐,你說的是有道理的,這就是我認爲它應該工作。我只是再試一次,如果我運行「grails -Dgrails.env =本地運行應用程序」或「grails -Dgrails.env =本地開發運行應用程序」重新加載不起作用(在Grails 2.0.1下)。所以像這樣運行它應該在「dev」中找到任何東西,但覆蓋任何我已經定義了「local」的東西 - 就像你上面所描述的那樣...這就是它如何工作的配置設置,但重裝似乎會丟失 – Steve 2012-03-06 00:12:49

+0

I必須同意史蒂夫 - Grails重載功能不適用於自定義環境。 GSP重新編譯可以通過在命令行中添加'-Dgrails.gsp.enable.reload = true'來解決,但* .grails類仍然被忽略。添加'-Ddisable.auto.recompile = false'沒有幫助。我正在使用Grails 2.1.1 – curd0 2012-09-25 13:34:54

5

您可以啓用自定義環境指定運行應用程序標記修改普惠制重裝:

-Dgrails.gsp.enable.reload=true 
+0

很高興知道,謝謝! – Steve 2012-05-02 21:41:16