First off, I do love Groovy & Grails. We’ve built a product with it: And I advise any dev shop that is Java focused to stop all development and switch immediately to G&G.

However, there are dirty little things that always ruin an otherwise perfect experience. This could be a very long post, detailing all of the tiny nits I have with Groovy & Grails. It wouldn’t be fun to write and it wouldn’t be fun to read.

Instead, I can encapsulate everything that is wrong with Groovy & Grails in one quick example. Take the markup builder in Groovy for example. Suppose I want to recreate this html:

<a href="mylink">Go here!</a>

This is a very simple example. Let’s see how it looks in Groovy:

def html = new MarkupBuilder()
html.h1 "Heading"
html.p {
      a(href:"mylink") "Go Here!"

Pretty straight forward right? Well, it would be if it worked! You see, you can set attributes of a tag with:


And the content of a tag with:

tagname "tag content"

But you can’t use them both at the same time! The first example doesn’t work! You have to use a hidden, UNDOCUMENTED ANYWHERE ON GROOVY.CODEHAUS.ORG namespace and method. Here is the working example (pay attention to line 5):

def html = new MarkupBuilder()
html.h1 "Heading"
html.p {
      a(href:"mylink") {
            mkp.yield("Go Here!")

And that, my friends, describes every single edge case scenario I have hit with Groovy & Grails. An obscure mkp namespace that contains a method yield handles the SPECIAL use case where I need both tag attributes and tag body content.

In other words, Groovy & Grails does quite a bit very, very well. Designed beautifully from a user-of-the-system’s perspective, you might say. And then BAM! You get slapped in the face with a complete shit-head-hack that was tacked on at the last minute in a fit of, “Oh… Fuck…! How are we going to handle THAT one?”

About the Author:

Learned something? Great! Need help on your development project? I can help @ Brilliant Chemistry or get in touch direct:

  • Ruby on Rails
  • iOS Development
  • System Architecture & Performance

Get in touch:


No comments yet, be the first.

Leave a Comment