以Grails Runtime Environment交互运行代码

时间:2009-02-13 16:32:29

标签: debugging grails groovy

我正在编写一些代码来将一些引导数据加载到我的Grails应用程序中。有些东西不能用于我正在尝试创建的类之一,因此能够以交互方式针对grails运行时环境运行该代码非常方便,我想知道是否有办法做到这一点。

我知道Grails控制台,但似乎没有加载我想要与之交互的自举数据。我在调试时也看到this thread - 是否有任何IDE允许交互式shell进入运行时?好像Debug Plugin计划提供这个,但还没有。

我发现this script 允许你从Grails上下文执行一个脚本,但我想要一些更具互动性的东西。

我在Grails 1.1上。

5 个答案:

答案 0 :(得分:6)

使用Grails控制台手动运行引导类,然后运行相关代码。

new BootStrap().init()

答案 1 :(得分: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应用程序中查看它。

答案 2 :(得分:4)

对于Grails 1.1,有一个基于Web的控制台插件,允许通过Web界面对正在运行的grails实例执行代码:

http://grails.org/Console+Plugin

答案 3 :(得分:1)

我使用IDEA。我已经为这种类型的“实验”创建了一个名为testController的控制器。这对我来说可以。您可以更新控制器上的代码,并使用IDEA中的degub重新测试,并通过URL调用控制器,而无需重新部署您的应用。

答案 4 :(得分:0)

您可以从IDE打开Grails应用程序的调试会话。 当您点击断点时,您可以直接从IDE运行任意代码。 在IntelliJ IDEA中,您可以通过调用Run - >打开此代码片段评估面板。评估表达。 Eclipse和NetBeans可能具有相同的功能。