The diversity of languages and programming paradigms allow us to solve existing problems by thinking solutions from very different approaches.
But why a Groovy developer should learn functional programming?
As I learned about functional programming, I found good ideas but I also found that it brought new clarity to my thinking about the design of class and methods. It also allowed me to write more concise code and how to make it better for reuse.
A few weeks ago, I spoke about functional programming with Groovy at Greach 2011. I presented basic concepts of functional programming paradigm and then focus on how to apply them to improve the code that we write with Groovy.
In our application we have to consume JMS messages. We install Grails JMS plugin and write a listener for this task. To not violate SRP, our consumer receives a message and routes it to a
MessageProcessorService for further processing.
Curious? Continue reading on Marcin’s weblog…
Sometimes you need to run Grails embedded Tomcat container in background as a part of your build in Jenkins/Hudson. Launching a
grails run-app & as Execute shell build step will result in a warning from Jenkins: Process leaked file descriptors.
The problem is described in the Jenkins wiki with some possible solutions. I chose the daemonize tool. As far as I know it is not available in any Debian repository, so I had to build it myself. It takes less than 3 minutes; just follow the instructions from the daemonize website.
I wrapped the
grails run-app with daemonize in a handy script:
run-app-as-daemon.sh that you can download from the Osoco’s GitHub repository.
The script starts the embedded Grails server with HTTP or HTTPS connector and then checks if the server is up and running by polling a configured URL. After e.g. some functional tests, it kills the server process by its PID.
If you want to apply the script in your build, you have to customize some variables, listed (and documented) in the script header. Usage is very simple:
Sample Jenkins build configuration:
Post build tasks:
If you download the
_Events.groovy script from the Osoco’s GitHub repository and put in in the
scripts directory of your Grails project, you’ll get a nice bubble notifications on your Linux or Mac desktop.
This script requires libnotify (Linux) or Growl with growlnotify (Mac) installed. It assumes that
GRAILS_HOME environment variable is correctly pointing to a Grails distribution (in order to display the Grails goblet icon in the notification bubble).