2009-02-13 107 views
2

我正在處理一些代碼以將一些引導數據加載到我的Grails應用程序中。有些東西與我正在創建的其中一個類不兼容,所以能夠在Grails運行時環境中以交互方式運行該代碼將非常方便,我想知道是否有辦法做到這一點。針對Grails運行時環境交互式運行代碼

我瞭解Grails控制檯,但似乎並未加載我想與之交互的引導數據。我還在調試中看到了this thread - 是否有任何IDE允許交互式shell進入運行時?好像Debug Plugin有計劃提供這個,但還沒有。

我發現this script,它允許你從Grails上下文執行一個腳本,但我希望更多的交互性。

我在Grails 1.1上。

回答

6

使用Grails控制檯手動運行引導類,然後運行有問題的代碼。

new BootStrap().init() 
+0

下面是運行init關閉的代碼片段: new BootStrap().init() – chanwit 2009-02-13 19:29:51

+0

謝謝chanwit!我應該做出這樣一個簡短的答案社區可編輯...下次我會的。 – codeLes 2009-02-14 04:51:42

5

終於找到正是我需要做的!

如果您添加到您的引導如下代碼:

def init = {servletContext -> 
    if (GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT) { 
     def appCtx = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext) 
     def grailsApp = appCtx.getBean(GrailsApplication.APPLICATION_ID); 
     Binding b = new Binding(); 
     b.setVariable("ctx", appCtx); 
     def console = new Console(grailsApp.classLoader, b); 
     console.run() 
    } } 

當應用程序啓動時,它還將開闢一個Groovy控制檯,這將讓你與域類交互方式進行交互。因此,例如,您可以添加一個新對象,然後在Web應用程序中查看它。

1

我使用IDEA。我爲這種「實驗」創建了一個名爲testController的控制器。這對我來說可以。您可以更新控制器上的代碼並使用IDEA中的degub重新測試,並通過URL調用控制器,無需重新部署應用程序。

0

您可以從IDE打開一個到Grails應用程序的調試會話。 當您點擊一個斷點時,您可以直接從IDE運行任意代碼。 在IntelliJ IDEA中,通過調用Run - > Evaluate Expression打開此代碼片段評估面板。 Eclipse中的NetBeans可能具有相同的功能。

0

有沒有辦法針對當前運行的應用上下文運行一些「命令」文件(可能是測試)?例如grails run-my-file.groovy,並且會立即得到結果,而不是等待grails run-app所做的所有事情。像grails控制檯,但在IDE中。我的意思是make文件,右鍵單擊RUN並在當前運行的應用程序上執行。