Groovy shines to produce DSLs. This is a great example; an open source Computer Music Software for assisted and algorithmic music composition
Groovy has some features and methods we can categorize as functional programming. The inject() method is a so called higher-order function. Other languages call it a fold, reduce or accumulate. The inject() method processes a data structure with a closure and builds up a return value.
- Improves in the loop statement
- Do-while statement example
- Supports Lambda expressions
- Support method reference (reference) and constructor reference (constructor reference)
- Support for try-with-resources statements
- Support for code blocks
- Support Java-style array initialization
- Support interface default method (default method)
- New Operators. Consistency operato, Elvis assignment ...
- Support for secure retrieval
- Supports runtime Groovydoc and saves Groovydoc as metadata in the AST node
Currently, GORM hibernate implementation offers a multitenancy solution out-of-the-box. He illustrates with an example a common use case for SaaS solutions:
one schema for all customers and using a column in each table to discriminate tenants
Last week Grails Guide
, shows JSON Views HAL
The purpose of HAL is make APIs "discoverable" - it defines a set of conventions that allow consumers of your API to follow links between resources, as well as providing pagination and other convenience features for "exploring" an API
If you were using Grails Angular profiles, this blog post by @Schlogen
is a must read for.
Grails 3 Angular profiles have been renamed in order to be consistent with the Angular team’s guidelines on naming conventions.
The goal of this change was to make determining which profile/scaffolding plugin should be used less confusing in the future.