Burt Beckwith's complete blog can be found at: http://burtbeckwith.com/blog/
2012-02-27 20:37:00.0
Check out Mike Hugo’s cool screencast
demonstrating the AutoTest plugin
. The plugin looks great – I’m a big fan of anything that makes testing easier, quicker, or more intuitive.
I released a version of the database-session
plugin that actually works (the version 1.0 release should have been a snapshot). I created it to be able to deploy apps on Heroku and run multiple web server instances (they don’t support session affinity or clustering) but it’s usable any time you want to store session data in a database or other datastore. In fact Masatoshi Hayashi has created a variant of the plugin that uses MongoDB
and I’ll be working with him to get that released soon. Anybody want to write one that uses Redis or Memcached?
I’ll also be working with Alex Shneyderman to get a release of the hibernate-filter
plugin out this week. It’s almost ready to go and works with Grails 2.0 apps, so it should be out soon.
If you haven’t already, check out my post Using Servlet 3.0 Async Features in Grails 2.0
. Note that Tomcat 7.0.26 was released this week
and it fixes a serious bug when deploying servlet 3.0 applications that would cause an OOME unless you disabled scanning for annotated web.xml classes.
If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link
or in an RSS reader with the feed
for just these posts.
Translations of this post:
Miscellaneous Items
-
The Grails App Configurator: Vision, Mission, Roadmap v1.0
-
Using VIM as your Grails IDE Part 1: Navigating your project
-
Submitting code to the Groovy language
-
Grails 2.0 action arguments data binding
-
Searching Multiple Data Sources in Grails
-
GrailsFlow 1.0.12, Released 02/23/2012
-
Using Lucene in Grails
-
Cloud Foundry Open Tour 2012
-
What’s new in Groovy 1.8.6: Array.contains()
-
Web service clients – where Grails lost its mojo
-
http://observatoriodegrails.com/hoy/?date=2012-02-20
-
http://observatoriodegrails.com/hoy/?date=2012-02-21
-
http://observatoriodegrails.com/hoy/?date=2012-02-22
-
http://observatoriodegrails.com/hoy/?date=2012-02-23
-
This Week in Spring, February 21st, 2012
Plugins
There were 3 new plugins released:
-
delicious
version 0.1. Integration with the Del.icio.us API
-
grails-runtime-docs
version 1.0.0-M1. Generates both Java and Groovy documentation for a project, also displaying the dynamic methods and properties added to artifacts along with their source information
-
zendesk
version 1.0.1. Interface to Zendesk support system via their API
and 17 updated plugins:
-
ajax-uploader
version 1.1. Tag Library which implements Andrew Valum’s excellent file uploader
-
build-test-data
version 2.0.1. Enables the easy creation of test data by automatic inspection of constraints
-
database-session
version 1.1.2. Stores HTTP sessions in a database
-
equals-hashcode-test
version 0.2-spock-0.5-groovy-1.7. Base Spock specification for testing equals and hashCode methods of domain classes and other Groovy objects
-
file-viewer
version 0.3. Provides a user-friendly way to view folders and files
-
functional-test
version 2.0-M1. Functional web testing using HtmlUnit to simulate the client browser
-
heroku
version 1.0.1. Integrates Heroku’s cloud platform
-
joda-time
version 1.4. Integrates the Joda Time date/time library into Grails
-
jxl
version 0.51. Export data to Excel using the JXL library
-
localizable
version 0.3. A wrapper for Google Maps geocoding service
-
mongodb-morphia
version 0.7.8. Alternative MongoDB GORM based on the Morphia library (former gorm-mongodb)
-
multi-tenant-single-db
version 0.8.2. Multi tenant setup focused on single database mode
-
simple-blog
version 0.2.0. Adds a simple blog interface to an application
-
vaadin
version 1.5.3. Adds Vaadin (http://vaadin.com/) integration
-
zk
version 2.0.0.M5. Adds ZK Ajax framework (www.zkoss.org) support to Grails applications
-
zk-hibernate
version 2.0.0.M5. Hibernate support for ZKGrails
-
zkui
version 0.5. Seamlessly integrates ZK with Grails’ infrastructures; uses the Grails’ infrastructures such as GSP, controllers rather than zk’s zul as in ZKGrails plugin
Interesting Tweets
- @graemerocher: #spock 0.6 looks outstanding, can’t wait for the #grails plugin
- @ck1125: New bloggage: Bare bones build.gradle script for build grails 2.0.x projects. http://t.co/UiHvUwcx
- @gr8conf: Announcing Nykredit (http://t.co/6HQ9hz5j) as Gold Sponsor for #gr8conf EU 2012 http://t.co/jBSlPmSO #groovy #grails #griffon #gradle THANKS
- @gr8conf: Announcing Balsamiq (http://t.co/3G0mBAmK) as Silver Sponsor for #gr8conf EU 2012 http://t.co/jBSlPmSO #groovy #grails #gradle THANKS!
- @wangjammer5: Another top #grails tip: Think of custom taglibs as your app’s UI “DSL”. Don’t fill your GSPs with copy and pasted calls to standard tags
- @tim_yates: I hadn’t seen the subMap function in #groovy before today… Been there since v1.0 apparently! [a:1,b:2,c:3].subMap( ['a','c'] )
- @gsaqui: Another #grails site goes live – http://t.co/t8WsRhxm
- @weceem: We’ve just been told that @best_support built their excellent site http://t.co/vY3TdNdg with @weceem. Congratulations! #grails #cms
- @grailsframework: If you want to keep your sanity with dates & times, I recommend the #jodatime plugin for #grails: http://t.co/aK9YsWib
- @xlson: Ever felt like parsing CSV in Groovy could be a bit nicer? It’s your lucky day, GroovyCSV 1.0 is out =) http://t.co/AzzurHhu #Groovy #CSV
- @tednaleid: released version 2.0.1 of grails build-test-data https://t.co/hRB6k1Kx a number of grails 2.0 bugfixes as well as a minor speed bump
- @glensomerville: Insert remote HTML fragment into GSP file with Groovy/Grails ${“http://other.app.com/my_html_fragment.php”.toURL().text}. How cool is that!
-
@smaldini: #datasources integration in #grails 2 allows very interesting patterns, like 1 dedicated db per plugin
- @graemerocher: Remember folks this is more efficient: def author = Author.proxy(1) def books = Book.findAllByAuthor(author) Using get(..) == extra query
- @graemerocher: For this wondering about the previous post proxy(..) is the same as load(…). See http://t.co/T8z9W9l5
- @hackinghealthca: #hackinghealth participants offering Grails, Location-Based Services & Natural Language Processing mentoring. check out http://t.co/EaRzf5Xx
- @nate_weldon: just released http://t.co/GcNSE78S #grails + #GAE + #jquery
-
@smaldini: just tested #groovy 2 static checking and compilation on #grails 2.1 , works on services artifacts for now but support will be extended
- @epragt: Organized a new #Groovy #Grails meetup. Suggestions for location and agenda welcome! http://t.co/Y2aQxqT7
Jobs
-
Dice keyword search for Grails
-
Monster keyword search for Grails
-
Careerbuilder keyword search for Grails
-
SpringSourceJob Twitter feed
-
SpringSource job search at jobs.vmware.com
- @Indigo_IT: Do you know of any Grails/Groovy developers with Java or PHP experience? If so, contact me at [email protected]
-
Groovy Grails Developer at ECHOage.com in Toronto
- @Indigo_IT: Si te interesan tecnologías tipo: Grails, Scala, Git, Spring, eres el colaborador que estamos buscando…. manda… http://t.co/z8V5c6id
-
Grails Developer in Highland Hills, OH
-
Java Developer in Utrecht
-
Analista programador Groovy/Grails – Madrid
-
Java / JVM / Grails Developer in Arlington, VA
-
Grails developer in Cleveland/Columbus OH
-
Senior Java Developer
- @SwaranSoftIndia: Mamen González @gmamenl Java developer interested in Web development frameworks, Groovy, Grails, Web 2.0, UX, SEO, web design.
-
Java/Grails Developer in Phoenix, AZ
-
Grails Developer with PHP Experience in Vancouver
-
Java Developer with Grails Wanted in Central London
- @Stefan_Rother: Meine Firma bietet in #Hamburg #Jobs für #Grails -Entwickler oder Java/ #Spring -Entwickler, die sich darin einarbeiten wollen. Meldet euch.
-
Grails / Java Developer – Minnetonka, MN
-
Java/Grails Senior Level Position – Hyderabad/ Secunderabad
-
Grails developer needed for a project in the Netherlands
-
Java developer with Grails wanted in Central London
-
Urgently Required Grails/Groovy expert for MNC in Mumbai Location
-
Greenfield Grails Development Opportunity – Remote
-
Hola, busco Desarrolladores Java que manejen o tengan conocimiento en las herramientas Groovy o Grails para trabajar en Ciudad de México
-
We Need 3 Grails Programmers in the Ohio area
User groups and Conferences
-
GR8Conf Europe 2012
- June 6th-8th Copenhagen, Denmark
-
GR8Conf US 2012
- July 29th-31st Minneapolis, MN
-
February 27, 2012
- SF Bay Groovy and Grails Meetup Group
-
Mr. Haki’s Grails 2.0 Sushi-sessie™ – March 6, 2012
- nlgug – Groovy and Grails User Group Netherlands
-
March 8, 2012
- Seattle Groovy/Grails Users Group
-
April 3, 2012
- nlgug – Groovy and Grails User Group Netherlands
2012-02-21 10:16:00.0
Grails 2.0.1 was released this week. Check out the release notes page
which has a link to the JIRA changelog and Graeme’s blog post
.
A couple of cloud-related items. The Heroku deployment process depends on a bundled version of supported versions of Grails that includes the Jetty jars that will be used to run the server for that instance. They’re working on a 2.0.1 bundle but it’s not ready yet, so you’ll need to continue to use 1.3.7 or 2.0.0 until this is resolved. There’s also an issue with Cloud Foundry affecting Grails applications that use the Spring Security Core plugin. The deployment process is reordering filter-mapping elements in the web.xml file and causing IllegalStateExceptions. It only affects annotation-guarded applications, so using one of the other two approaches is a workaround. Watch this JIRA issue
if this affects you.
Update: the Heroku team updated their supported versions and you can now deploy 2.0.1 apps along with 2.0.0 and 1.3.7
If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link
or in an RSS reader with the feed
for just these posts.
Translations of this post:
Miscellaneous Items
-
Choose One Of Our Grails VPS Hosting Options!
-
Groovy Closure Composition
-
Grails Plugins Presentation
-
Spock Killer Features: The ‘Old’ Method
-
Hosting Grails web applications using Tomcat and Nginx (our configuration)
-
Grails database migration on existing project in PROD
-
http://observatoriodegrails.com/hoy/?date=2012-02-13
-
http://observatoriodegrails.com/hoy/?date=2012-02-14
-
http://observatoriodegrails.com/hoy/?date=2012-02-15
-
http://observatoriodegrails.com/hoy/?date=2012-02-16
-
This Week in Spring: February 14th, 2012
Plugins
There was 1 new plugin released:
-
tomcat-bundler
version 0.0.1. Simplifies bundling application with Tomcat to create a whole package to be used by hosting
and 16 updated plugins:
-
cdn-resources
version 0.2.1. Loads static resources using Content Delivery Networks using the Resources plugin framework
-
coffeescript-resources
version 0.3.1. Create coffeescript modules that automatically compiles on every file change with jCoffeeScript
-
cxf-client
version 1.2.7. Use existing (or new) Apache CXF wsdl2java generated content to invoke SOAP services
-
fields
version 1.0.4. Customizable form-field rendering based on overrideable GSP template
-
grails-template-engine
version 0.2.1. Exposes the GSP engine as a service to render GSPs outside of a web request
-
ic-alendar
version 0.3.4. Export event data in the iCalendar format
-
jaces
version 1.7.2.2. Streamlines the process of creating database applications using Dojo
-
kickstart-with-bootstrap
version 0.5.6. Start your project with a good looking frontend, with adapted scaffolding templates for standard CRUD pages using Twitter Bootstrap
-
pluginator
version 0.2. Lets you define callbacks and properties in an application that are normally only available in plugins, e.g. doWithWebDescriptor, doWithDynamicMethods, loadAfter, observe, etc.
-
raphael
version 2.0.2. Provides the JavaScript Vector Library Raphaël – cross-browser vector graphics the easy way
-
regen
version 0.3. Provides a generation framework and a set of pluggable artefacts under grails-app/generators
-
spring-security-facebook
version 0.6.2. Plugin for Facebook Authentication, as extension to Grails Spring Security Core plugin
-
spring-security-oauth2-provider
version 1.0.0.M5.1. OAuth2 Provider support for the Spring Security plugin
-
zk
version 2.0.0.M4. Adds ZK Ajax framework (www.zkoss.org) support to Grails applications
-
zk-hibernate
version 2.0.0.M4. Hibernate support for ZKGrails
-
zkui
version 0.5.M3. Seamlessly integrates ZK with Grails’ infrastructures; uses the Grails’ infrastructures such as GSP, controllers rather than zk’s zul as in ZKGrails plugin
Interesting Tweets
- @Aitortxu: Fallando con Grails http://t.co/Y0w9965g
- @bobbywarner: Just realized you can use (grails integrate-with –git) instead of manually creating a gitignore file! #grails
- @grailsframework: #grails howtos have moved into ‘grails’ GitHub organisation: http://t.co/rMXgbFwj
- @ddelponte: Just went live with another Grails 2 app! http://t.co/pJZq2Wz7
- @grailsframework: #grails howtos are now automatically built and deployed to GitHub Pages via Hudson: http://t.co/zYC2Z6Ww
- @tahmed: Employers are paying premiums for certain development skills including #Java, #Ruby on #Rails and # Groovy/ #Grails. http://t.co/nMH3PV4G
- @LarsFischer: Fantastic, thanks! @kimmobj: Finally you have a start of a tutorial. https://t.co/Ws4Hfeoc #Grails #Magnolia_CMS #tutorial #Groovy
- @smaldini: did interesting benches this night with #grails 2.0.1 – I have discovered new tips for (premature) optimization.
- @nahi: NTT SOFT, affiliate of the biggest telecom of Japan, announced they embrace Grails/Groovy as a development technology. http://t.co/VOwvzyY6
- @CedricChampeau: Would anyone be interested in writing a #groovy to #javascript converter (transpiler?) ?
- @skillsmatter: We r supporting @GeeCON in Poznan! 35+ speakers, 42+ sessions on #Java, #Agile, #NoSQL, #Groovy, #Scala + more! More at http://t.co/AoEUsvX2
- @jshingler: #COJUG #Grails Slides: http://t.co/c15EQe7C
- @tomaslin: Cool, didn’t know you could open any file with the ‘open’ command in grails, thought it was just reports #springio
- @tomaslin: You can do parsing of dates in Grails 2 via params.date( ‘myVar’, ‘ddMMyyyy’ ) using the primitive parsing mechanism #springio
- @tomaslin: The clickonero site handles 1.5M daily page views and 80k concurrent users in their grails application with 1000-3000 daily sales
- @niclupien: Grails HowTos – The french translation is coming… https://t.co/aqsoEygu #grails
- @gamino: Just discovered the power of eachParallel with GPars. My loops will never be the same. #groovy #gpars #parallelcomputing
-
@smaldini: #BOF #Groovy #Grails accepté
– Hands on : Ma première application web sociale avec Grails et dans le Nuage ! Refusé
#devoxx
- @mgryszko: Slides from my Polyglot Grails talk at #springio http://t.co/hU9i85PN
- @mgryszko: Source code of my Polyglot Grails talk: https://t.co/fbiEw1Cc #springio
Jobs
-
Dice keyword search for Grails
-
Monster keyword search for Grails
-
Careerbuilder keyword search for Grails
-
SpringSourceJob Twitter feed
-
SpringSource job search at jobs.vmware.com
- @kalebdf: Immediately hiring JavaScript devs @PROSpricing. Work in a fun fast start-up like atmosphere with #Backbone #ExtJS #Mustache #Groovy #NoSQL
-
Senior Developer for Groovy Startup (Java & Grails too!) at Taulia Inc. in San Francisco
-
Software Developer – Java/J2EE/Linux, Grails in Montreal
-
Groovy & Grails for Mumbai location
-
Senior Java/Grails developer at Secret Escapes in London, UK
-
Junior web application developer (Java/Grails) at Secret Escapes in London, UK
-
Quince is looking for a Java / Grails Developer – Amsterdam
- @MCGInformation: #Grails #Java #Software #Developer #job #opening in #Austin, #Texas – 913-693-8200 or [email protected] http://t.co/2i6j0ggW
- @sdelamo: Busco un programador Grails para un par de proyectos. Contactarme si quereis saber más. Abstenerse monos & lagartos #springio
- @adrianjbrown: Looking for innovative front-end web developers for contract work or to join our team. Experience with JSP, Groovy, and/or Grails a plus.
-
Java, Groovy, and Grails Developer at M-Square in Brisbane, Australia
-
Grails Developer – URGENT in Rockhampton & Capricorn Coast Australia
-
Ingénieur d’études et développement JAVA J2EE Grails H/F – Hauts-de-Seine
-
Intermediate Grails & Front-End Developer at Kobo in Toronto
-
Java / Grails Praktikum (m/ w) – Berlin
- @craftti: Estamos contratando! Se você é um dev de back-end em grails ou RoR envie seu CV para [email protected]. Vaga para São Paulo.
-
J2EE with Grails skills – Mississauga, Canada
- @NeilGodwin_: Java / Grails Developer required – Perm – Central London – Great opportunity! Call for details, Neil 0207 831 1144
- @eGeneer: Seeking #grails engineers/devs for new digital innovation team. Feeling creative? See http://t.co/WjNtGlqj #job #london
-
Groovy / Grails Developer – Noord-Holland
User groups and Conferences
-
GR8Conf Europe 2012
- June 6th-8th Copenhagen, Denmark
-
GR8Conf US 2012
- July 29th-31st Minneapolis, MN
-
February 27, 2012
- SF Bay Groovy and Grails Meetup Group
-
Mr. Haki’s Grails 2.0 Sushi-sessie™ – March 6, 2012
- nlgug – Groovy and Grails User Group Netherlands
-
March 8, 2012
- Seattle Groovy/Grails Users Group
2012-02-20 16:14:00.0
I was talking to someone last week about the new support for Servlet 3.0 async features in Grails 2 and realized I didn’t know that much about what was available. So I thought I’d try it out and share some examples. The documentation
is a little light on the subject, so first some background information.
The primary hook to do asynchronous work in the 3.0 spec is the new startAsync method in the javax.servlet.ServletRequest class. This returns an instance of the javax.servlet.AsyncContext interface which has lifecycle methods such as dispatch and complete, gives you a hook back to the request and response, and lets you register an javax.servlet.AsyncListener. You call the start method passing in a Runnable to do the asynchronous work. Using this approach frees up server resources instead of blocking, which increases scalability since you can handle more concurrent requests.
In order to use this however the servlet that handles the request must support async, and all applied filters in the filter chain must too. The main Grails servlet (GrailsDispatcherServlet
) is registered in the 3.0 version of the web.xml template with the async-supported attribute set to true. And Servlet3AsyncWebXmlProcessor
adds <async-supported>true</async-supported> to all filter declarations in web.xml after it’s generated. So that’s covered for you; there is no required web.xml configuration on your part.
You also have to be configured to use servlet API 3.0. This is simple to do; just change the value of grails.servlet.version to “3.0″ from the default value of “2.5″. Note that there is a legacy setting in application.properties with the name app.servlet.version; you should delete this line from your application.properties file since its value is ignored and overridden at runtime by the value from BuildConfig.groovy.
You don’t call startAsync on the request from a controller though; call startAsync directly on the controller. This method is added as a controller method (wired in as part of the controllers’ AST transforms from ControllersAsyncApi
(by ControllerAsyncTransformer
if you’re curious)). It’s important to call the controller’s startAsync method because it does all of the standard work but also adds Grails integration. This includes adding the logic to integrate all registered PersistenceContextInterceptor
instances, e.g. to bind a Hibernate Session to the thread, flush when finished, etc., and also integrates with Sitemesh. This is implemented by returning an instance of
GrailsAsyncContext
which adds the extra behavior and delegates to the real instance provided by the container (e.g. org.apache.catalina.core.AsyncContextImpl in Tomcat) for the rest.
Therer are a few other new async-related methods available in the request; they include boolean isAsyncStarted() and AsyncContext getAsyncContext().
I’ve attached a sample application (see below for the link) to demonstrate these features. There are two parts; a simple controller that looks up stock prices asynchronously, and a chat application.
StockController is very simple. It just has a single action and suspends to look up the current stock price for the requested stock ticker. It does this asynchronously but it’s typically very fast, so you probably won’t see a real difference from the serial approach. But this pattern can be generalized to doing more time-consuming tasks.
Call http://localhost:8080/asynctest/stock/GOOG, http://localhost:8080/asynctest/stock/AAPL, http://localhost:8080/asynctest/stock/VMW, etc. to test it.
The second example is more involved and is based on the “async-request-war” example from the Java EE 6 SDK
. This implements a chat application (it was previously implemented with Comet). The SDK example is one large servlet; I split it up into a controller to do the standard request work and the ChatManager class (registered as a Spring bean in resources.groovy) to handle client registration, message queueing and dispatching, and associated error handling.
The implementation uses a hidden iframe which initiates a long-running request. This never completes and is used to send messages back to each registered client. When you “login” or send a message, the controller handles the request and queues a response message. ChatManager then cycles through each registered AsyncContext and sends JSONP to the iframe which updates a text area in the main page with incoming messages.
One thing that hung me up for quite a while was that things worked fine with the SDK example but not mine. Everything looked good but messages weren’t being received by the iframe. It turns out this is due to the optimizations that are in place to make response rendering as fast as possible. Unfortunately this resulted in flush() calls on the response writer being ignored. Since we need responsive updates and aren’t rendering a large page of html, I added code to find the real response that’s wrapped by the Grails code and send directly to that.
Try it out by opening http://localhost:8080/asynctest/ in two browsers. Once you’re “logged in” to both, messages sent will be displayed in both browsers.
Some notes about the test application:
- All of the client logic is in web-app/js/chat.js
- grails-app/views/chat/index.gsp is the main page; it creates the text area to display messages and the hidden iframe to stay connected and listen for messages
- This requires a servlet container that implements the 3.0 spec. The version of Tomcat provided by the tomcat plugin and used by run-app does, and all 7.x versions of Tomcat do.
- I ran
install-templatesand edited web.xml to addmetadata-complete="true"to keep Tomcat from scanning all jar files for annotated classes – this can cause an OOME due to a bug that’s fixed in version 7.0.26(currently unreleased) - Since the chat part is based on older code it uses Prototype but it could easily use jQuery
You can download the sample application code here.
2012-02-14 06:07:00.0
Groovy 1.8.6 was released this week
and the upcoming Grails 2.0.1 release will include it.
The call for papers for GR8Conf Europe and GR8Conf US ends this week on the 15th so be sure to get your proposals in ASAP.
I released an update of the console
plugin this week but all the credit for the changes goes to Matt Sheehan. The UI now supports either a horizontal or vertical view and has several other usability and look/feel tweaks (like CTRL+Enter will execute the current code). Upgrade to version 1.1 to see the updates.
It’s been 17 months since the last release, but the 0.2 release of the Spring Security UI
plugin is finally out. It includes 19 fixed JIRA issues and now works with Grails 1.3.x and 2.0.0. Check out the docs here
. I’m hoping to have some time this week to do a quick blog post this week discussing the changes and some notes on upgrading, in particular if you’ve customized some of the pages.
Check out my Why I’ll never use Groovy on Grails
post if you haven’t already, and spread the word – there are still a lot of confused people out there
If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link
or in an RSS reader with the feed
for just these posts.
Translations of this post:
Miscellaneous Items
-
Semi-RESTful Scaffolded Controllers
-
Create your own Groovy type conversion
-
Integrating Twilio text messaging service with Grails
-
Ye Olde Tragic Journey of Attempting to Upgrade to Grails 2.0.0
-
Run Grails on the Cloud with Heroku
-
Cómo suplantar o impersonar a un usuario utilizando el Plugin Spring Security en Grails
- Spanish post on using the switch-user feature in Spring Security Core
-
Save 30% on Core Spring classes
-
Our plan for Gradle 1.0
-
Java 7: A complete invokedynamic example
-
Creating Google Calendar in Grails – Part 1: The Model
-
CAS, Grails, and custom attributes
-
Adding Mobile Views to your Grails Applications with JQuery Mobile: A Real Life Example
-
http://observatoriodegrails.com/hoy/?date=2012-02-06
-
http://observatoriodegrails.com/hoy/?date=2012-02-07
-
http://observatoriodegrails.com/hoy/?date=2012-02-08
-
http://observatoriodegrails.com/hoy/?date=2012-02-09
-
http://observatoriodegrails.com/hoy/?date=2012-02-10
-
This Week in Gradle (2012-6)
-
This Week in Spring, February 7th, 2012
Plugins
There were 2 new plugins released:
-
kickstart-with-bootstrap
version 0.5. Start your project with a good looking frontend, with adapted scaffolding templates for standard CRUD pages using Twitter Bootstrap
-
sham
version 0.2. Uses the sham data generation library to generate test/demo data
and 22 updated plugins:
-
autobase
version 1.0.0.0. Database migrations
-
build-info
version 1.2.3. Provides a controller/view that display basic information about the war file
-
build-test-data
version 2.0.0. Enables the easy creation of test data by automatic inspection of constraints
-
console
version 1.1. A web-based Groovy console for interactive runtime application management and debugging
-
constraints
version 0.8.0. Allows you to create custom domain Constraints for validating Domain objects
-
dojo
version 1.7.1.5. Integrates the Dojo javascript toolkit
-
drools-gorm
version 0.5.6. Integrates Drools 5.2 and jBPM 5 and provides persistent storage using GORM
-
export
version 1.1. Export domain objects to a variety of formats (CSV, Excel, ODS, PDF, RTF and XML)
-
external-config-reload
version 1.0.0. Polls for changes to external configuration files (files added to grails.config.locations), reloads the configuration when a change has occurred, and notifies specified plugins by firing the onConfigChange event in each
-
feature-toggle
version 0.2. Provides Tag Libraries and dynamic methods to implement configurable features
-
fields
version 1.0.3. Customizable form-field rendering based on overrideable GSP template
-
gsp-taglib
version 0.4. Makes it possible to declare tags in a gsp in grails-app/taglib
-
jaxrs
version 0.6. Supports the development of RESTful web services based on the Java API for RESTful Web Services (JSR 311: JAX-RS)
-
lesscss-resources
version 1.0.1. Optimises the use of http://www.lesscss.org css files, compiling .less files into their .css counterprt, and place the css into the processing chain to be available to the other resource plugin features
-
paypal
version 0.6.6. Adds PayPal integration
-
routing
version 1.2.0. Send and route messages to a wide variety of destination endpoints directly from your Controllers and Services using Camel
-
routing-jms
version 1.2.0. JMS integration for the grails-routing plugin
-
spring-security-facebook
version 0.6. Plugin for Facebook Authentication, as extension to Grails Spring Security Core plugin
-
spring-security-oauth2-provider
version 1.0.0.M5.1-SNAPSHOT. OAuth2 Provider support for the Spring Security plugin
-
spring-security-ui
version 0.2. User interface extensions for the Spring Security plugin
-
zk
version 2.0.0.M3. Adds ZK Ajax framework (www.zkoss.org) support to Grails applications
-
zk-hibernate
version 2.0.0.M3. Hibernate support for ZKGrails
Interesting Tweets
- @aalmiray: groovyConsole a.k.a. “the regexp console” => much easier to write and test regexps on the fly with #groovy
- @asteingr: writing a grails 2.0 unit test for a #groovy mixin using @commons and @requires and @ensures – that’s AST transformation power baby!
- @joergrech: Finally, I published my first Grails plugin Kickstart with Bootstrap at http://t.co/8cF0TUFp Please give me feedback! @grails @grailsplugins
- @DZone: Why I’ll never use Groovy on Grails – http://t.co/XHVI7JMR – @DZone Big Link by mswatcher
- @glaforge: After January’s 36th position, #groovy is ranked 28th this month in the #tiobe index! http://t.co/lrWqUTmb
- @mrhaki: Our company website is now build with #grails and running on our private #cloudfoundry platform.
- @ThinkVidya: @Groovy & @Grails training in Bangalore http://t.co/L8cpLUOV
- @odinodin: Had an excellent time at the #groovy meetup session at #CiA2012. The Norwegian Groovy community is certainly getting some traction!
- @bgoetzmann: I made my #Grails StoreGo project public, demonstrating #GMongo, #MongoDB with aggregate functions, #Highcharts JS! http://t.co/xzxtMI8m
- @tednaleid: released grails build-test-data 2.0 with unit test support! https://t.co/g5ITirKX
- @tednaleid: the last release of every one of my public plugins has had contributions from the grails community: build-test-data, redis, markdown, jasypt
- @chanwit: Beanstalk Hosting is neat! Free *private* Git / SVN with 100MB. Good to go as a #Grails plugin repo. http://t.co/QJsklt9Z
-
@mengukagan: when we got over 40 users in #grails channel, we got excited. now it is normal. we get excited when we get over 60.
- @nils_magnus: The #grails community is making nice plugins at an impressive rate “@grailsplugins: Export functionality 1.1 released: http://t.co/Fn75aLFq”
Jobs
-
Dice keyword search for Grails
-
Monster keyword search for Grails
-
Careerbuilder keyword search for Grails
-
SpringSourceJob Twitter feed
-
SpringSource job search at jobs.vmware.com
-
Software Engineer – J2EE / Grails Developer in Palo Alto, CA
-
Lead Grails/MVC Developer – Bay Area, California
- @fridgebuzz: I don’t suppose there are any Grails/GWT, front-end developers in Toronto looking for a challenging opportunity? HTML, CSS, JS, etc also.
- @taittweets: BANNER – SGHE x 2 Developers – Analysts – for Long term Ireland contract. Ideal is with Groovy & Grails.
-
Scientific Programmer at University of Amsterdam
- @eGeneer: Hiring #html5 #Java (incl #grails #groovy) #dev‘s #london #job See http://t.co/WjNtGlqj
- @spidie: Any #grails developers interested in a 6 week contract up in Rockhampton? #in #yam
-
Remote Lead Grails Developer
-
Intermediate Grails & Front-End Developer at Kobo in Toronto, Canada
-
Grails Developer in Austin, TX
-
Java Web Developer (Java, grails, JSP, Lifecycle, Design) in Jakarta, Indonesia
-
Java/J2EE – Grails x2 Montreal or Ottawa
-
Java/Groovy/Grails Developer (contract) in Cleveland, OH
-
Lead Grails Developer / Agile Architect – J2EE, Java, Spring in Northampton, UK
-
Quince is looking for a Java / Grails Developer in Amsterdam
-
Developer Advocate – Cloud Foundry in Tokyo
- @Oliver_Bernard: “NEW ROLE” Java_Grails contract – I am looking for Superstar Java Dev’s with good exposure to Groovy & Grails. £400-£450 p/d and a 3 month …
-
Senior Grails Developer (m/w) ID 1815 (Softwareentwickler/in) – Deutschland, Wismar, Mecklenburg
- @wavyx: @Auctelia looking for 2 java groovy grails web developers #betagroup
-
Java Developer – Groovy and Grails – Java – Media in London
-
URGENT REQ — Sr. Grails/Groovy Developer — 3 months possible extension — McLean, VA
- @TechnicalJobs4U: #Grails #Java #Software #Developer #job #opening in #Austin, #Texas – 913-693-8200 or [email protected] http://t.co/cXVEzzJI
User groups and Conferences
-
Spring I/O 2012
- February 16th and 17th in Madrid
-
GR8Conf Europe 2012
- June 6th-8th Copenhagen, Denmark
-
GR8Conf US 2012
- July 29th-31st Minneapolis, MN
-
Grails “Goto” Plugins – February 15, 2012
- Washington DC Area Groovy User Group
-
Deploying Grails Applications – 20 Feb 2012
- London GGUG
-
March 8, 2012
- Seattle Groovy/Grails Users Group
2012-02-06 18:16:00.0
Why? Because it doesn’t exist. The framework is called Grails. Just Grails. Go to http://grails.org/
and search the site. You won’t see any “Groovy on” anywhere. Seriously. Check it out. I’ll wait.
I guess some history about what caused all this is in order. Back in 2005 the Grails framework was started after discussions on the Groovy mailing list about the idea of a Groovy-based JVM alternative to Ruby on Rails which was then starting to get a lot of buzz. The original name was “Groovy on Rails”, but only a few months later in March 2006 Graeme sent a note to the mailing list titled “Groovy on Rails is no more (kind of)”
saying that David Heinemeier Hansson had complained about the name, so he was changing it to just “Grails”.
It’s now February 2012. One month short of six years since the name was changed to Grails. And yet there are still a lot of recruiters (who are for the most part beyond hope) and even developers (who should know better) who call Grails “Groovy on Grails” and “Groovy on Rails”. “Groovy on Rails” makes some sense since there’s a historical basis for it, but “Groovy on Grails” makes me think of nonsense phrases like Splooby on Splails. We don’t call Spring MVC “Spring on Java” or Struts “Struts on Java”. Django isn’t “Django on Python”. Even recruiters looking for “Groovy & Grails” developers are a bit confused since you can’t use Grails without Groovy.
I was thinking that if there were a PHP framework that used the Rails-like convention-over-configuration approach that they could call it PHP on Rails, but that developers would just call it Phails, so I guess that’d be unfortunate. But someone did this, and I’m guessing got a similar note from DHH since the PHP on TRAX
website describes the name as “Php On Trax (formerly Php On Rails)”.
So if you’re one of “them”, stop. Refer to the framework as Grails. And when replying to clueless recruiters who are looking for Groovy on Grails developers, gently remind them that there’s no such thing.
