HTTP/2 302
server: nginx
date: Thu, 31 Jul 2025 11:16:26 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20090628130310
location: https://web.archive.org/web/20090628130310/https://github.com/dima767/grails-internals-handbook
server-timing: captures_list;dur=1.105445, exclusion.robots;dur=0.033390, exclusion.robots.policy;dur=0.013620, esindex;dur=0.018353, cdx.remote;dur=8.753657, LoadShardBlock;dur=494.381132, PetaboxLoader3.datanode;dur=81.096191, PetaboxLoader3.resolve;dur=355.714049
x-app-server: wwwb-app218
x-ts: 302
x-tr: 544
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: SERVER=wwwb-app218; path=/
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 301
server: nginx
date: Thu, 31 Jul 2025 11:16:27 GMT
content-type: text/html; charset=utf-8
content-length: 129
x-archive-orig-server: nginx/0.6.26
x-archive-orig-date: Sun, 28 Jun 2009 13:03:10 GMT
x-archive-orig-connection: close
x-archive-orig-status: 301 Moved Permanently
location: https://web.archive.org/web/20090628130310/https://github.com/dima767/grails-internals-handbook/tree/master
x-archive-orig-x-runtime: 224ms
x-archive-orig-cache-control: no-cache
x-archive-orig-content-length: 129
cache-control: max-age=1800
memento-datetime: Sun, 28 Jun 2009 13:03:10 GMT
link:
; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Sun, 28 Jun 2009 13:03:10 GMT", ; rel="memento"; datetime="Sun, 28 Jun 2009 13:03:10 GMT", ; rel="next memento"; datetime="Mon, 21 Dec 2009 03:09:31 GMT", ; rel="last memento"; datetime="Sat, 26 Jul 2025 14:40:51 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_10_20090628105705_crawl103_IndexOnly-c/52_10_20090628130215_crawl101.arc.gz
server-timing: captures_list;dur=0.951981, exclusion.robots;dur=0.029214, exclusion.robots.policy;dur=0.012688, esindex;dur=0.014182, cdx.remote;dur=88.665567, LoadShardBlock;dur=670.761043, PetaboxLoader3.datanode;dur=327.606384, PetaboxLoader3.resolve;dur=483.944615, load_resource;dur=280.257663
x-app-server: wwwb-app218
x-ts: 301
x-tr: 1082
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 302
server: nginx
date: Thu, 31 Jul 2025 11:16:27 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20090629100157
location: https://web.archive.org/web/20090629100157/https://github.com/dima767/grails-internals-handbook/tree/master
server-timing: captures_list;dur=0.581572, exclusion.robots;dur=0.023250, exclusion.robots.policy;dur=0.011994, esindex;dur=0.014758, cdx.remote;dur=9.343300, LoadShardBlock;dur=127.758432, PetaboxLoader3.datanode;dur=59.914593, PetaboxLoader3.resolve;dur=66.606844
x-app-server: wwwb-app218
x-ts: 302
x-tr: 170
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 200
server: nginx
date: Thu, 31 Jul 2025 11:16:28 GMT
content-type: text/html; charset=utf-8
x-archive-orig-server: nginx/0.6.26
x-archive-orig-date: Mon, 29 Jun 2009 10:01:57 GMT
x-archive-orig-connection: close
x-archive-orig-status: 200 OK
x-archive-orig-x-runtime: 981ms
x-archive-orig-etag: "3c87612265fa3a1968ffd15f6594d6ab"
x-archive-orig-cache-control: private, max-age=0, must-revalidate
x-archive-orig-content-length: 22106
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: utf-8
memento-datetime: Mon, 29 Jun 2009 10:01:57 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Sat, 27 Jun 2009 13:50:09 GMT", ; rel="prev memento"; datetime="Sat, 27 Jun 2009 13:50:09 GMT", ; rel="memento"; datetime="Mon, 29 Jun 2009 10:01:57 GMT", ; rel="next memento"; datetime="Wed, 29 Jul 2009 05:53:09 GMT", ; rel="last memento"; datetime="Sat, 29 Aug 2009 14:53:57 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_10_20090629063935_crawl103-c/52_10_20090629100049_crawl101.arc.gz
server-timing: captures_list;dur=0.683239, exclusion.robots;dur=0.028482, exclusion.robots.policy;dur=0.013249, esindex;dur=0.016499, cdx.remote;dur=15.338028, LoadShardBlock;dur=235.373158, PetaboxLoader3.datanode;dur=140.792003, PetaboxLoader3.resolve;dur=355.652427, load_resource;dur=340.083031
x-app-server: wwwb-app218
x-ts: 200
x-tr: 653
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
dima767's grails-internals-handbook at master - GitHub
This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a
member .
Every repository with this icon (
) is private.
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
5
33
Sun Jun 28 08:56:04 -0700 2009
Foreword
Why do we need this book?
It is one thing to know how to use an existing uber cool framework,
and another thing to know its internals and being able to read the code and understand how it does things under the covers.
For true ‘hacker’ types it is a very satisfying experience to be able to understand and to contribute to a successful Open Source project.
So this is an attempt to fill the void of documenting the inner workings of the Grails framework. Please note that it probably will not be possible to
cover every possible class and every single line of code, but at least it is an attempt to cover major Grails subsystems fairly thoroughly.
The main advantage of such a book is that it’s ‘community-driven’ and if the original author gets stuck or loses a passion, hopefully other passionate ‘hackers’
will fork it and keep it alive. In fact the book is designed to be written by ‘community’ and the ‘original author’ encourages everyone to contribute by forking it.
Contributing.
If you want to contribute, fork this repository and go ahead.
Pull requests on GitHub are more than welcome. If you use
patches, make sure you use git format-patch and your patch
has author name and email address on it.
Do keep in mind that my native language is Russian, so do not
hesitate to correct my English grammar
This feature is coming soon. Sit tight!