grails goto plugins
TRANSCRIPT
![Page 1: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/1.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 1
Grails Goto PluginsEric Sword
![Page 2: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/2.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 2
Who am I
● Professional geek for 17 years● Turned management refugee in 2005● Now full-time dev and tech lead for SAIC● Java '97, Groovy '07, Grails '09● Blog: http://www.swordsystems.com● [email protected]
![Page 3: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/3.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 3
This Presentation● Start from nothing - almost● Full app in 1 hour
DB Persistence Authentication Audit Logging
Load Monitoring DB Monitoring Remote Debugging
Unit Tests Integration Tests Functional Tests
Test Data Fixtures Lucene Indexes Tags and Tag Clouds
![Page 4: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/4.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 4
Get the Code● https://github.com/esword/grails-plugin-sandbox
![Page 5: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/5.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 5
All Together Now
Groovy on RailsGroovy on Grails
Grails
![Page 6: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/6.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 6
Grails Recipe
● Take most popular Java web techs
![Page 7: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/7.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 7
● Apply dollop of groovy glue● Conventions from top to bottom● Minimal boiler plate code
![Page 8: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/8.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 8
Your Choice of 745 Fixings
●
![Page 9: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/9.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 9
Bake with fully integrated testing tools
![Page 10: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/10.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 10
Enjoy!
● Full stack web-application framework
![Page 11: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/11.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 11
Running App in 3 Lines
● grails create-app bookstore● cd bookstore● grails run-app
![Page 12: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/12.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 12
Add MVC
● create-domain-class Author● cre<tab> Book● create-scaffold-controller <tab> Author● <up arrow> Book
![Page 13: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/13.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 13
Define Domain
![Page 14: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/14.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 14
New in 2.0
● Much improved interactive shell● Better class reloading● Web-based dbconsole
![Page 15: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/15.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 15
dbconsole
● drool,drool, drool
![Page 16: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/16.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 16
Get Real
● Authentication● Test Data● Testing● Audit Logging● Monitoring
![Page 17: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/17.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 17
IDE Integration
● Intellij Rocks– Does require $ for Ultimate Edition
● STS – Spring Source Toolsuite– A solid “meh”
![Page 18: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/18.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 18
Plugins
● Project Overlay● Augment Build● Add Common Libs● Add Capabilities
![Page 19: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/19.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 19
![Page 20: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/20.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 20
Authentication
● Do it first● Avoid mocking stuff for user session
![Page 21: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/21.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 21
Spring Security Plugin
● grails install-plugin spring-security-core
or● BuildConfig.groovy:● compile ':spring-security-core:1.2.7.2'● grails s2-quickstart bookstore.auth
BookstoreUser AuthRole●
![Page 22: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/22.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 22
BuildConfig.groovy
● Ivy Dependency Management● SCM● Repository Deployment● Plugin Definitions
![Page 23: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/23.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 23
Init Security
● grails s2-quickstart bookstore.auth BookstoreUser AuthRole
![Page 24: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/24.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 24
Config.groovy
● Tip: Break it up● Makes it easier to upgrade grails● Easier to find settings of different types● Don't forget to test it
![Page 25: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/25.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 25
Unit vs Integration Tests
● Grails 2 unit test enhancements● Integration tests go through init sequence
● create-integration-test BootStrap● test-app integration:● open test-report
![Page 26: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/26.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 26
Back to Security
![Page 27: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/27.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 27
Lock it Down
● Can use Annotation in controllers
or● Centralized url-access map
http://grails-plugins.github.com/grails-spring-security-core/docs/manual/
![Page 28: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/28.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 28
Fixtures Plugin
● grails install-plugin fixtures● Concise DSL for creating domain objects● Test data sets● Initialization data
![Page 29: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/29.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 29
Fixtures Shortcomings
● Can't load external file● Doesn't load in production● No easy “if exists” check● Can work around all of these
![Page 30: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/30.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 30
Fixtures Plugin
● Fixture for roles and system user● Fixture for test/demo users● Test! Test! Test!
![Page 31: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/31.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 31
Why so many tests?
● It's easy● Compile time checking no longer there● Do you value your sanity?
![Page 32: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/32.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 32
Productivity Chart
![Page 33: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/33.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 33
Grails without Tests
![Page 34: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/34.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 34
Activate Fixtures
● A bit about Bootstrap.groovy
![Page 35: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/35.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 35
App-Specific Config Settings
● ConfigSlurper - a very smart properties file● Remember - can overload with other files
![Page 36: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/36.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 36
BuildTestData Plugin
● Fills in non-essential bean fields● Keeps data in-tests
– Also Integrates with Fixture plugin
● As of last week, works in Unit Tests– new Book().validate() vs
Book.build().validate()
![Page 37: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/37.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 37
● Have– DB persistence, authentication, unit and
integration tests, auto-initialized user and data sets
● Need– Audit logging, Load monitoring, remote
debugging, functional tests, code coverage metrics, Lucene indexed queries, UI niceties
Status Check
![Page 38: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/38.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 38
● grails install-plugin audit-logging
● grails install-plugin code-coverage
● grails install-plugin console
● grails install-plugin codenarc
● grails install-plugin geb
● grails install-plugin grails-melody
● grails install-plugin runtime-logging
…Oh eff it...● Add plugin dependencies to BuildConfig
Bam!
![Page 39: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/39.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 39
● CodeNarc– Warning: Will not run in interactive console
● Coberturra– Need to tweak include/exclude sets
● Both integrate well with Jenkins
Code Analysisand
Test Coverage
![Page 40: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/40.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 40
● static auditable = true● Hooks into grails persistence events● Record changes down to property level● Integrates with spring security to capture
user● Controller to view some audit info
Audit Logging
![Page 41: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/41.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 41
● SELECT * FROM AUDIT_LOG order by id desc
Audit Logging
![Page 42: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/42.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 42
Monitoring with Melody
![Page 43: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/43.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 43
● dbconsole● console● App-info
– Warning: Not working with grails 2 yet
Remote Debugging
![Page 44: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/44.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 44
● Have– DB persistence, authentication, unit and
integration tests, auto-initialized user and data sets, audit logging, load monitoring, remote debugging, code coverage metrics
● Need– functional tests, Lucene indexed queries,
UI niceties
Status Check
![Page 45: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/45.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 45
● static searchable = true● Lucene index against domain classes
Searchable Plugin
![Page 46: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/46.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 46
● Functional Testing with Geb
Or● Tags and Tag Cloud
Audience Choice
![Page 47: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/47.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 47
● static searchable = true● Lucene index against domain classes
Taggable and Tag Cloud
![Page 48: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/48.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 48
● http://grails.org/
● http://grails.org/plugins/
● https://github.com/esword/grails-plugin-sandbox
● http://groovyblogs.org/entries/recent
● http://glaforge.appspot.com/article/videos-and-slides-of-groovy-grails-exchange-2011
● http://mrhaki.blogspot.com/
Resources
![Page 49: Grails Goto Plugins](https://reader034.vdocuments.site/reader034/viewer/2022052218/555876ddd8b42a8d018b5348/html5/thumbnails/49.jpg)
February 15, 2012 Grails Goto Plugins DC GUG Copyright 2012 Eric Sword 49
Thanks!
● Happy Plugging!● http://www.swordsystems.com● http://www.slideshare.net/ericsword/grails-
goto-plugins● [email protected]