Для Grails есть замечательный плагин console. Один минус у него: при структуре проекта чуть сложнее Hello World, когда в проекте десятки или сотни пакейджей, например — надо обязательно осуществлять импорт доменных классов вручную. А это — лишнее время, причём тратится оно не разово, а раз в рестарт сервера.
К сожалению, добраться до GroovyShell, в котором выполняется введённый пользователем код — кажется, нереально, Хотя силён и могуч Groovy, но вроде бы там даже кложеров не используется, которые было бы можно заменить. Тогда я пошёл другим путём, через фильтры.
class ConsoleFilters {
def filters = {
all(controller: 'console', action: '*') {
before = {
if (!session['_grails_console_last_code_']) {
session['_grails_console_last_code_'] = '''\
import ru.bytexgames.berserk.*
// vars: ctx; grailsApplication; config; request; session. E.g.: ctx.getBean("bankService")
'''
}
}
}
}
}
Этот код перехватывает любые обращения к контроллеру console (хотя вообще говоря, достаточно лишь только экшена index). Если до этого не исполнялся никакой код, в textarea пишем приведённый выше текст. Стандартное поучение на 5 строчек — хорошо для новичков, но простого списка доступных переменных, думаю, достаточно.
На самом деле, конечно, плагин нуждается в дополнительных улучшениях — попробую посмотреть, что с этим можно сделать :) Но как стартовая точка для оптимизации — вполне пойдёт и автоимпорт доменных классов. Просто создайте по фильтру на каждый ваш проект ;)