You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by "jamesfredley (via GitHub)" <gi...@apache.org> on 2026/10/08 19:28:14 UTC
[PR] Update Grails 8 guide snippets for the 8.0.0 release [grails-static-website]
jamesfredley opened a new pull request, #560:
URL: https://github.com/apache/grails-static-website/pull/560
## Summary
- Pin the Grails 8 guide samples and prose to Grails 8.0.0 and Gradle 9.8.0.
- Match the companion-repo fixes required by the GA runtime: explicit `nullable: false` on required strings and associations, `Long` resource counts, saving an `Author` before attaching `ContactInfo`, and removing the unversioned Jansi dependency from vendored build snippets.
- Note that a Grails 8 plugin must ship message bundles under its own name (`shared-core.properties`), not `messages.properties`.
Historical milestone rows in `conf/releases.yml` are unchanged.
## Test plan
- [x] Companion samples for these guides were built and tested on Grails 8.0.0 before the snippet sync.
- [ ] `./gradlew validateGuides -PvalidationMode=both`
- [ ] Render one changed guide, for example `./gradlew renderGuide_grails-rest-library_8`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Update Grails 8 guide snippets for the 8.0.0 release [grails-static-website]
Posted by "jamesfredley (via GitHub)" <gi...@apache.org>.
jamesfredley merged PR #560:
URL: https://github.com/apache/grails-static-website/pull/560
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Update Grails 8 guide snippets for the 8.0.0 release [grails-static-website]
Posted by "Copilot (via GitHub)" <gi...@apache.org>.
Copilot commented on code in PR #560:
URL: https://github.com/apache/grails-static-website/pull/560#discussion_r4223321120
##########
guides/creating-your-first-grails-app/v8/guide/creatingTheApp.adoc:
##########
@@ -3,7 +3,7 @@ You can recreate `initial/` yourself with the Grails Application Forge:
[source,bash]
----
curl -O https://start.grails.org/creating-your-first-grails-app.zip \
- -d version=8.0.0-SNAPSHOT \
+ -d version=8.0.0 \
Review Comment:
The generated GA application now uses Grails 8's nullable-by-default behavior, but the copied domain snippets still rely on the old defaults. `Make.name`, `Model.name`/`make`, and `Vehicle.name`/`year`/`make`/`model` can therefore be null even though this guide presents them as the inventory model's required data. Update those domain constraints with explicit `nullable: false` alongside this version change.
##########
guides/grails-fields-custom-widgets-and-wrappers/v8/snippets/grails-app/domain/example/Book.groovy:
##########
@@ -14,10 +14,10 @@ class Book {
static hasMany = [tags: Tag]
static constraints = {
- title blank: false, maxSize: 255
- isbn blank: false, matches: /^(?:\d{10}|\d{13}|\d{3}-\d-\d{2}-\d{6}-\d)$/
+ title nullable: false, blank: false, maxSize: 255
+ isbn nullable: false, blank: false, matches: /^(?:\d{10}|\d{13}|\d{3}-\d-\d{2}-\d{6}-\d)$/
genre inList: ['Fiction', 'Non-Fiction', 'Biography', 'Science', 'History', 'Poetry']
- description blank: false, maxSize: 2000, widget: 'textarea'
+ description nullable: false, blank: false, maxSize: 2000, widget: 'textarea'
Review Comment:
This nullable migration is incomplete for the sample. `Book.author`, `Book.genre`, and `Book.priceUSD` still default to nullable, so null bypasses the association, `inList`, and `min` checks; `ContactInfo.author`/`phone`/`mailingAddress` and `Tag.name` have the same problem. Add explicit `nullable: false` constraints so the model and constraint-driven required markers match the guide.
##########
guides/database-per-tenant/v8/snippets/gradle.properties:
##########
@@ -1,4 +1,4 @@
-grailsVersion=8.0.0-M5
+grailsVersion=8.0.0
Review Comment:
Pinning this sample to Grails 8.0.0 leaves its required fields nullable: `Manufacturer.name` and `Vehicle.model` still rely on `blank: false`, while `Vehicle.year` relies on `min`. In Grails 8, `null` bypasses those constraints, so incomplete tenant and vehicle records now validate. Add `nullable: false` to those domain properties when updating the runtime.
##########
guides/grails-transactional-events/v8/snippets/grails-app/domain/example/AuditLog.groovy:
##########
@@ -12,7 +12,7 @@ class AuditLog {
Date occurredAt
static constraints = {
- eventType blank: false, maxSize: 64
+ eventType nullable: false, blank: false, maxSize: 64
orderId min: 1L
customerId min: 1L
orderTotal min: new BigDecimal('0.01')
Review Comment:
`orderId`, `customerId`, and `orderTotal` remain nullable under Grails 8 because `min` does not reject null. That permits audit rows without the identifiers or snapshot total that this model is intended to preserve. Add `nullable: false` to all three constraints.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org