以Grails Runtime Environment交互运行代码

Jea*_*ash 2 debugging grails groovy

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

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

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

我在Grails 1.1上.

cod*_*Les 6

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

new BootStrap().init()
Run Code Online (Sandbox Code Playgroud)


Jea*_*ash 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()
    }   }
Run Code Online (Sandbox Code Playgroud)

当应用程序启动时,它还将打开一个Groovy控制台,它允许您以交互方式与域类进行交互.因此,例如,您可以添加新对象,然后在Web应用程序中查看它.