Debugging 在Grails运行时环境中交互运行代码

Debugging 在Grails运行时环境中交互运行代码,debugging,grails,groovy,Debugging,Grails,Groovy,我正在编写一些代码,以便将一些引导数据加载到我的Grails应用程序中。我试图创建的类中有一个不起作用,因此能够在grails运行时环境中交互地运行代码将非常方便,我想知道是否有办法做到这一点 我知道Grails控制台,但它似乎没有加载我想要与之交互的引导数据。我还看到了关于调试的问题——是否有任何IDE允许交互式shell进入运行时?它似乎有计划提供这种服务,但目前还没有 我发现它允许您从Grails上下文执行脚本,但我想要更具交互性的脚本 我在Grails1.1上 使用Grails控制台手动

我正在编写一些代码,以便将一些引导数据加载到我的Grails应用程序中。我试图创建的类中有一个不起作用,因此能够在grails运行时环境中交互地运行代码将非常方便,我想知道是否有办法做到这一点

我知道Grails控制台,但它似乎没有加载我想要与之交互的引导数据。我还看到了关于调试的问题——是否有任何IDE允许交互式shell进入运行时?它似乎有计划提供这种服务,但目前还没有

我发现它允许您从Grails上下文执行脚本,但我想要更具交互性的脚本


我在Grails1.1上

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

new BootStrap().init()

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


终于找到了我需要做的事情

如果向引导添加以下代码:

 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应用程序中查看它

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

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

有没有办法针对当前运行的应用程序上下文运行一些“命令”文件(可能是测试)?例如,grails运行-my-file.groovy并立即获得结果,而不是等待grails运行应用程序所做的一切。与grails控制台类似,但在IDE中。我的意思是生成文件,右键单击在其上运行,它将在当前运行的应用程序上执行。

下面是运行init闭包的代码片段:new BootStrap()。init()谢谢!我应该做出如此简短的回答。。。下次我会的。不要认为Eclipse(或STS)有这样一个“计算表达式”特性,它可以与Groovy代码一起工作。但愿如此。