代码之家  ›  专栏  ›  技术社区  ›  Jean Barmash

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

  •  2
  • Jean Barmash  · 技术社区  · 15 年前

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

    我知道Grails控制台,但它似乎无法加载我想要与之交互的引导数据。我也看到了 this thread 调试时——任何一个IDE都允许交互式shell进入运行时吗?看起来像 Debug Plugin 有提供这个的计划,但还没有。

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

    我在圣杯1.1上。

    6 回复  |  直到 9 年前
        1
  •  4
  •   Siegfried Puchbauer    15 年前

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

    http://grails.org/Console+Plugin

        2
  •  6
  •   community wiki 2 revs codeLes    15 年前

    使用Grails控制台手动运行bootstrap类,然后运行有问题的代码。

    new BootStrap().init()
    
        3
  •  5
  •   community wiki Jean Barmash    15 年前

    终于找到了我需要做的!

    如果将以下代码添加到引导程序中:

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

        4
  •  1
  •   user197583    15 年前

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

        5
  •  0
  •   rlovtang    14 年前

    您可以从您的IDE打开Grails应用程序的调试会话。 当您到达一个断点时,您可以直接从您的IDE运行任意代码。 在intellij思想中,通过调用run->evaluate表达式打开此代码片段评估面板。 Eclipse-NetBeans可能具有相同的特性。

        6
  •  0
  •   Alex Shwarc    9 年前

    有没有办法针对当前运行的应用程序上下文运行一些“命令”文件(可能是测试)?例如,grails run-my-file.groovy可以立即获得结果,而不必等待grails run应用程序所做的一切。像Grails控制台,但在IDE内部。我的意思是制作文件,右键单击它上面的运行,它会在当前的运行应用程序上执行。