Version 1.3.0
Released on 2016-04-19.
“Learning Ratpack”, the impending and definitive resource for those wanting to dig deeper into Ratpack, will be based on 1.3.
In addition to internal performance improvements and bug fixes, this release updates dependency versions and adds several new features.
The following dependencies have been updated:
- Netty 4.1.0.CR6 (ratpack-core)
- Groovy 2.4.6 (ratpack-groovy, ratpack-groovy-test)
- RxJava 1.1.2 (ratpack-rx)
- Hystrix 1.5.1 (ratpack-hystrix)
This release also adds a dependency on Caffeine 2.2.6, a high performance caching library.
The new include()
method in the Groovy script DSL allows conveniently composing an application out of discrete scripts.
The new Promise.time()
method allows recording how long it takes to produce a promised value, while the new Promise.close()
method makes it more convenient dispose of a resource used to produce a promised value. The Promise.of()
and Promise.ofLazy()
methods have been deprecated in this release, replaced with Promise.async()
and Promise.sync()
respectively.
The ratpack.server.Service
type has been deprecated in favor of the new ratpack.service.Service
type. Additionally, it is now possible to accurately order dependent services via the new DependsOn
and ServiceDependencies
classes. Ratpack now starts and stops services in parallel, respecting dependencies.
This release also restores support for Gradle's continuous build, with Gradle 2.13 and on.
Breaking Changes
The default health check renderer now emits a 503
status code if any check was unhealthy.
The Promise.wiretap()
method was fixed to also capture failure results.
The serialized session form has changed in this release. This may cause session reads to fail for cookies that were set with earlier Ratpack versions. Future versions of Ratpack will handle this situation more gracefully. Please see issue #945 for the status of this issue, and workarounds that can be applied in the meantime.
Links
Pull Requests (7)
- [908] - Timed Methods with asynchronous return types should count async completion time (fromanator)
- [911] - Include additional Groovy scripts into Ratpack.groovy (johnrengelman)
- [915] - Support protocol relative redirects (beckje01)
- [935] - Allow ordering services. (ldaley)
- [936] - add jwt pac4j test (gschrader)
- [953] - Update Groovy to 2.4.6 (erdi)
- [954] - Add when() and onlyIf() taking a closure and a class to GroovyChain. (erdi)
Resolved Issues (21)
- [790] - Add Promise.flatMapError()
- [838] - Add include() method to Ratpack.Groovy that allows composing the DSL
- [872] - Typo in guide
- [878] - Consider using last modified timestamp instead of comparing the whole app script for each request when detecting changes
- [883] - Allow specifying order of service setup/teardown
- [892] - GroovyChain is missing overloads for when() taking a closure and an chain action class and onlyIf() taking a closure and a handler class
- [904] - Add promise utility methods for resource open/close management
- [910] - DefaultRedirector does not handle locations starting with \\ properly
- [912] - HealthCheckHandler should respond with status code 503 when unhealthy
- [917] - NPE raised by NettyHandlerAdapter#isIgnorableException
- [931] - Better promise factory method names
- [932] - Add a method to Promise for timing the fulfilment of promises
- [933] - Introduce Caffeine as a core dependency and use for caches
- [938] - Cookies set by a Handler should be accessible from a RequestFixture result
- [943] - Unable to use Kryo as custom Java serializer because core types require constructors
- [947] - Session should not be marked dirty if a remove(key) is called when there is no entry for key
- [948] - Serialized form of session data should use only JDK types
- [949] - Terminating client side session should also remove last access token cookie
- [952] - Update Groovy to 2.4.6
- [955] - Actions passed to Promise.wiretap() and Operation.wiretap() are not executed if the promise/operation result in an error.
- [956] - Ratpack should start in development mode when launched from the IDEA debugger