Today, I wanted to do some debugging of an ExtJS app that uses Grails. In the past, I would have just copied and pasted the ExtJS source files into my Grails webapp folder. But today, I decided there has to…
Today, I wanted to do some debugging of an ExtJS app that uses Grails. In the past, I would have just copied and pasted the ExtJS source files into my Grails webapp folder. But today, I decided there has to…
A few months back my wonderful wife bought me an awesome “Mensa Puzzle” daily calendar. I love little brain teasers so I was looking forward to tackling one a day to keep the old noggin sharp. Unfortunately, here we are…
Yesterday I woke up to face an awful requirement: a site administrator needs the ability to download the contents of just about any table to CSV, edit them, and then re-upload the CSV. Seriously – why’d we bother building an…
I just wanted to plug (ha ha) a new Grails plugin that I’ve created which compiles CoffeeScript source files into JavaScript files. I created it because the existing CoffeeScript-related plugins didn’t quite do what I needed to do. When working…
I use Crucible a lot to manage code reviews. It’s a great tool, allowing you to add files to a review based on a version control revision, range of revisions, or by individual file. However, one baffling omission is the…
I work on a years-old non-Grails project with a manual database migration procedure. Essentially, all migrations are stored in uniquely named scripts, and when a script is run it’s recorded in a database table, such that we can query the…
The other day I had to go to support.microsoft.com, and I got a raw error page: That made me think that it’d be a good idea to blog how to create a custom error handler in Grails. By “handler,” I…
We’re working on an application right now that needs to log a number of events: user login, object deletion, and all sorts of other things that are conveniently dispatched through the Spring application context that’s part of the core of…
A quick post here about something very cool I just learned from the folks at the CoffeeScript Google Group: you can use CoffeeScript’s destructured assignment capabilities on function and method arguments! This is really nice. Say you’re passing an object…
I’m working on a quick internal plugin that has domain models, and I wrote an integration test that did a findAll(). BOOM! Dreading errors about “methodMissing” not helping find all of the model. I forgot something key about plugins: they’re…