Чтобы добавлять сообщения и комментарии, .

@ArtemZ:
ArtemZ

Перешёл с mysql на H2 в продакшене. Боже, какие замечательные ощущения...

@cmortuorum:
cmortuorum

В IDEA 12.0.2 починили баг с авторелоадингом в последнем грейлз

@cmortuorum:
cmortuorum

Grails 2.1.3 Released
jira.grails.org

@ArtemZ:
ArtemZ

Няшная бета версия нового сайта grails — beta.grails.org

@ArtemZ:
ArtemZ

Настройка log4j наверно одна из самых сложных вещей в grails. Заняло аж 20 минут, чтобы в нём разобраться.

@wwarlock:
wwarlock

#gr8 #gvm #grails Инструмент для управления множеством различных версий стека технологий gr8 (groovy, griffon, grails, etc ).
fbflex.wordpress.com

@wwarlock:
wwarlock

Не удержался и купил билет ещё на одну конференцию.
Интересуют только #Spring, #Groovy и #Grails. Облака медленно проплывают мимо.
springsource.org

@ArtemZ:
ArtemZ

Вышел Grails 2.0. Ура!
Что нового: grails.org

@cmortuorum:
cmortuorum

Grails 2.0 Released!
blog.springsource.org
grails.org

@neFormal:
neFormal

Словил сегодня прекрасный косяк. Граблисы числа форматируют по 3 десятичных разряда (1 234 567), и даже в полях ввода(да, норкоманы они). Так вот вместо обычного пробела они вставляют какой-то иной символ. И в запросе он приходит, поэтому для превращения в строку надо пробелы поудалять. При этом регэксп его за пробельный символ не считает. Удалил с помощью replaceAll(/\D/, '')
И вот я не понимаю, что там за такой особый символ мог оказаться?.

@neFormal:
neFormal

Пишите код в текстовом редакторе, собирайте консольными тулзами.
Словил багу в граблесах в sts-эклипсе. Там криво компилялся код, а компилялся автоматически. В итоге я очень долго не мог понять, почему из класса пропадают методы. Благо, багу закрыли недели 2-3 назад (до этого я на неё забил), обновился, и проблема исчезла.

@neFormal:
neFormal

Ещё в граблисах местами в dev конфигурации можно неожиданно для себя работать с заглушкой вместо реального механизма. В результате на продакшене появятся совершенно необычные ошибки, ведь в dev-е всё работало.

@neFormal:
neFormal

А ещё в grables можно словить ConcurrentModificationException при загрузке индексовой странички. Пиздец, говнокод.

@neFormal:
neFormal

Сраные навязанные соглашения. Вот на кой они FieldName приводят к field_name ?. Очень, сука, мешает, когда делаешь маппинг на существующую таблицу.
Или вот, есть спринговый плагин авторизации, но в одном случае в нём можно обнаружить в качестве атрибутов сессии структурку с именем юзера, а в другом просто строчку. Логика авторов от меня сбежала и спряталась.

@neFormal:
neFormal

Очередная радость. Если в поиске по модели делать foreign.id, то всё ищет, а вот если foreign.name — уже нет. Пытается найти атрибут foreign.name у модели и не находит. Вот же ж как.

@neFormal:
neFormal

Ещё одна заметка на тему множественных датасорсов. Хоть в настройках каждого датасорса есть флажок pooled, который указывает создание пула коннектов к базе, но всё равно значение он берёт из основного датасорса. Меняем его на true и получаем ~3хкратный прирост скорости выборки.
Желаю автору плагина зла. Чтоб он сдох, сука ламер грёбаный!!111 ]8-E~~~

@neFormal:
neFormal

Есть для граблисов паджинатор, странички делает. И под него есть кастомный тэг, в атрибутах которого есть поле 'params', куда можно передать параметры запроса для кнопок страниц. Очень хорошая штука, но ...
Атрибут принимает мапу, но мапа передаётся строкой почему-то. Ну да ладно, суть не в этом. В грувях мапа выглядит [a: 1, 'b':2] (кавычки для строковых ключей можно опускать, как в примере). И вот эта строчка передаётся с url кодированием двоеточий.. т.е. name=[a%3A1]. А потом на входе граблисы смотрят, что на мапу не похоже, и преобразуют это всё в строку.
Обходной путь, в принципе, понятен, там дополнительно передаётся аргумент в виде 'name.a', к чему можно обратиться, как params.'name.a'

@neFormal:
neFormal

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 висит неюзабельное, но почему-то минорное..

@neFormal:
neFormal

Граблис снова "порадовали". Сделали там обёртку над хибернейтовским CriteriaBuilder, а метод add не положили. Прощайте любимые сосиско-вызовы. >_<
Нет, в целом это всё ещё юзабельно, но набивать по отдельности критерии фильтрации записей уже нельзя. Вместо add().add() приходится делать матрёшку с вложенными лямбдами. =\

@neFormal:
neFormal

Grails — платформа для быстрой разработки сайтов. Но в ней и в groovy нет лёгких высокоуровневых способов для создания тривиального post-запроса. >_<''' Ручная запись через стримы в коннект, ручная запись аргументов запроса(тут я надеюсь всё же я не нашёл). Свежая платформа!

@neFormal:
neFormal

Мде, fails вместо того, чтобы сделать нормальное наследование темплейтов, делает генерированные темплейты по прототипам. В принципе, решение нормальное, но при изменении темплейтов-прототипов и последующей перегенерёжке оно предложит затереть существующие темплейты. Со всем тюнингом и прочими рукописными вещами. So sad..

@neFormal:
neFormal

Как делается поддержка нескольких источников данных в grails.
Берём грельсы в левую руку, ставим на них плагин datasources, прописываем конфиги источников данных для нужных моделей(модели указываются списком), запускаем. Обнаруживаем, что грельсы сначала мапят все модели в основную базу, и только потом указанные модели мапятся в другие. При этом в основной базе таблицы для перемапленных моделей останутся пустыми.
Grails — образец кривого фреймворка с кучей костылей.

@neFormal:
neFormal

грельсовские скрипты для создания проекта/моделей/етк — это редкостное тормозное говно.. не пользуйте их..
real 0m11.091s
user 0m14.020s
sys 0m0.430s
похоже, они томкат поднимают.. иного объяснения этому феерическому пиздецу я не нахожу..

@ishe:
ishe

хватит думать. будем раздуплять dbunit-operator plugin

@iorlas:
iorlas

Как ведёт себя джава если на одной машине нужно разместить 2 или более веб-приложения, допустим, на GRails? Требуется ли запуск ещё одной JVM? Если не требуется и запуск приложений производится в одной JVM, то компенсируется ли относительная прожорливость джавы на небольших приложениях в случае если их будет много?

@cmortuorum:
cmortuorum

Постоянно забываю, что вместо Integer.parseInt(params.lalala) можно юзать params.int('lalala') — а ведь это вин

@iorlas:
iorlas

Цирк 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 )

И всё в таком духе. В официальной документации. Ужас.

@iorlas:
iorlas

Или вот такой:
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.

@iorlas:
iorlas

Как вам такой ужастик?
def (int i, String s) = [1, 'Groovy']
А вот как на пайтоне:
i, s = [1, 'groove']

@iorlas:
iorlas

Почитал о грейлс. Вроде как хороший фреймворк, пользуется саппортом "гигантов", разрабатывается "гигантами" же. Но и то в нём не так, и это не то, а там вообще взяли плохую часть из РоР, а там чистый руби и ужас, кровь кишки. Не смотря на этом, видно что там работали люди, которые хотели сделать мир лучше grails.org

@cmortuorum:
cmortuorum

хоть IntelliJ IDEA и пиздец какая тормознутая по сравнению с эклипсом, она охуительная. Надо будет купить

@cmortuorum:
cmortuorum

Если не получается сгенерировать контроллер и виды из базового класса с помощью generate-all и при этом выводится сообщение "Domain class not found in grails-app/domain, trying hibernate mapped classes...", не забудьте включить название пакета. И вместо grails generate-all Animal надо писать grails generate-all zoo.Animal

@wwarlock:
wwarlock

Начав с груви, открыл для себя Scala.
А, ведь, во всём виноват AppEngine )
Кабы Grails на нём пахал без сбоев, не начались бы мои искания )
В общем, читаю, сейчас книжку Мартина Одерски, чего и вам желаю, хотя бы просто для расширения кругозора, как в случае с груви.
Для справки, Одерски, родитель Scala — один из разработчиков компилятора javac и дженериков.

@wwarlock:
wwarlock

Пока Гильерм Лафорж и Грэм Роше пилят grails, чтобы он не падал на app-engine, решил поиграться с Play Framework (извинить за тавтологию).

@wwarlock:
wwarlock

jira.codehaus.org
Жаль не попался раньше этот линк. Я уже успел поймать DeadlineExceededException.

@wwarlock:
wwarlock

Вот смешно, при достижении определённого количества файлов, или даже создании файлов определённого типа, например, фильтров или таглибов, под виндой grails app-engine перестаёт работать, но прекрасно работает под другими средами.
gant падает во время сборки на задаче DataNucleus Enhancer с ошибкой incorrect parameter при вызове java. Проблема кроется в ограниченой длине строки.
Да, есть способ уменьшить количество просматриваемых файлов на предмет сущностей JPA, но даже сами разработчики говорят о нём как о крайней мере и обещают выпустить исправление.

@wwarlock:
wwarlock

Всё-таки, не очень удобно, что плагины, которые ты ставишь в проект, хранятся не в нём самом, а в
~/.grails/<версия грааля>/projects/<имя проекта>/plugins.
Да, есть способ переопределить настройки в BuildConfig.groovy через grails.plugin.location для каждого плагина отдельно.
Или для всех оптом: grails.project.plugins.dir="./plugins".
Но почему так было сделано по-умолчанию, я пока объяснения не нашёл. Причём до версии 1.1 они хранились именно в проекте.
Всё вышесказанное было к тому, что при таком раскладе, часто возникают проблемы при переключении веток, если разнится состав плагинов или их версии.

@wwarlock:
wwarlock

Радость оказалась недолгой.
Через некоторое время, отваливаются инъектированные в ShiroUser методы, типа save().
Просто, во время очередного запуска через grails app-engine, ругается на их отсутствие.
Почему так происходит, для меня полная загадка.

@wwarlock:
wwarlock

Appengine с Nimble не собирается в следствие то ли длинных имён файлов, то ли из-за большого их количества, к сожалению, не разобрался окончательно.
Acegi не работает, так как требует hibernate. Appengine поставляется либо с JPA, либо с JDO на выбор. Но есть способ перегрузить некоторые классы и отвязаться от хибернэйта.
Чистый Shiro, поверх которого построен Nimble, работает сразу из коробки.

@wwarlock:
wwarlock

На случай, если кто-то вдруг не знает ещё.
Grails обновился до 1.3.4
springsource.org

Примечание к релизу:
grails.org

Странно, что в таком навороченном FW отсутствует автоматическое обновление самого себя, ну или хотя бы уведомление о релизе.
В том же, ROR, который взят за образец подражания, возможность апгрейда присутствует.