Что нового: grails.org
И вот я не понимаю, что там за такой особый символ мог оказаться?.
Словил багу в граблесах в sts-эклипсе. Там криво компилялся код, а компилялся автоматически. В итоге я очень долго не мог понять, почему из класса пропадают методы. Благо, багу закрыли недели 2-3 назад (до этого я на неё забил), обновился, и проблема исчезла.
Или вот, есть спринговый плагин авторизации, но в одном случае в нём можно обнаружить в качестве атрибутов сессии структурку с именем юзера, а в другом просто строчку. Логика авторов от меня сбежала и спряталась.
Желаю автору плагина зла. Чтоб он сдох, сука ламер грёбаный!!111 ]8-E~~~
Атрибут принимает мапу, но мапа передаётся строкой почему-то. Ну да ладно, суть не в этом. В грувях мапа выглядит [a: 1, 'b':2] (кавычки для строковых ключей можно опускать, как в примере). И вот эта строчка передаётся с url кодированием двоеточий.. т.е. name=[a%3A1]. А потом на входе граблисы смотрят, что на мапу не похоже, и преобразуют это всё в строку.
Обходной путь, в принципе, понятен, там дополнительно передаётся аргумент в виде 'name.a', к чему можно обратиться, как params.'name.a'
jira.grails.org
— I tried to use criteria.scroll() ... and found that its not really usable as is.
— Moving to 1.2, non critical
<after year>
— Moving to 1.3
с 2008 висит неюзабельное, но почему-то минорное..
— I tried to use criteria.scroll() ... and found that its not really usable as is.
— Moving to 1.2, non critical
<after year>
— Moving to 1.3
с 2008 висит неюзабельное, но почему-то минорное..
Нет, в целом это всё ещё юзабельно, но набивать по отдельности критерии фильтрации записей уже нельзя. Вместо add().add() приходится делать матрёшку с вложенными лямбдами. =\
Берём грельсы в левую руку, ставим на них плагин datasources, прописываем конфиги источников данных для нужных моделей(модели указываются списком), запускаем. Обнаруживаем, что грельсы сначала мапят все модели в основную базу, и только потом указанные модели мапятся в другие. При этом в основной базе таблицы для перемапленных моделей останутся пустыми.
Grails — образец кривого фреймворка с кучей костылей.
real 0m11.091s
user 0m14.020s
sys 0m0.430s
похоже, они томкат поднимают.. иного объяснения этому феерическому пиздецу я не нахожу..
groovy.codehaus.org
interface X
{ void f(); void g(int n); void h(String s, int n); }
def logger = [
log : { Object[] params -> println "LOG: ${params[0]}"; if( params.length > 1 ) params[1].printStackTrace() },
close : { println "logger.close called" }
].asType( loggerInterface )
И всё в таком духе. В официальной документации. Ужас.
Цирк interface X
{ void f(); void g(int n); void h(String s, int n); }
def logger = [
log : { Object[] params -> println "LOG: ${params[0]}"; if( params.length > 1 ) params[1].printStackTrace() },
close : { println "logger.close called" }
].asType( loggerInterface )
И всё в таком духе. В официальной документации. Ужас.
def bar = foo?.something?.myMethod()
С виду ничего не понятно, но, как оказывается, это лучшее решение проблемы, которой нет:
If you are walking a complex object graph and don't want to have NullPointerExceptions thrown you can use the ?. operator rather than . to perform your navigation.
def (int i, String s) = [1, 'Groovy']
А вот как на пайтоне:
i, s = [1, 'groove']
А, ведь, во всём виноват AppEngine )
Кабы Grails на нём пахал без сбоев, не начались бы мои искания )
В общем, читаю, сейчас книжку Мартина Одерски, чего и вам желаю, хотя бы просто для расширения кругозора, как в случае с груви.
Для справки, Одерски, родитель Scala — один из разработчиков компилятора javac и дженериков.
jira.codehaus.org
Жаль не попался раньше этот линк. Я уже успел поймать DeadlineExceededException.
Жаль не попался раньше этот линк. Я уже успел поймать DeadlineExceededException.
gant падает во время сборки на задаче DataNucleus Enhancer с ошибкой incorrect parameter при вызове java. Проблема кроется в ограниченой длине строки.
Да, есть способ уменьшить количество просматриваемых файлов на предмет сущностей JPA, но даже сами разработчики говорят о нём как о крайней мере и обещают выпустить исправление.
~/.grails/<версия грааля>/projects/<имя проекта>/plugins.
Да, есть способ переопределить настройки в BuildConfig.groovy через grails.plugin.location для каждого плагина отдельно.
Или для всех оптом: grails.project.plugins.dir="./plugins".
Но почему так было сделано по-умолчанию, я пока объяснения не нашёл. Причём до версии 1.1 они хранились именно в проекте.
Всё вышесказанное было к тому, что при таком раскладе, часто возникают проблемы при переключении веток, если разнится состав плагинов или их версии.
Через некоторое время, отваливаются инъектированные в ShiroUser методы, типа save().
Просто, во время очередного запуска через grails app-engine, ругается на их отсутствие.
Почему так происходит, для меня полная загадка.
Acegi не работает, так как требует hibernate. Appengine поставляется либо с JPA, либо с JDO на выбор. Но есть способ перегрузить некоторые классы и отвязаться от хибернэйта.
Чистый Shiro, поверх которого построен Nimble, работает сразу из коробки.
Grails обновился до 1.3.4
springsource.org
Примечание к релизу:
grails.org
Странно, что в таком навороченном FW отсутствует автоматическое обновление самого себя, ну или хотя бы уведомление о релизе.
В том же, ROR, который взят за образец подражания, возможность апгрейда присутствует.