natty

Grails บน Windows ภาคสอง (simple domain class + controller)

In grails on September 15, 2008 at 9:18 pm

เฮ้อ เขียน blog แล้วรู้สึกผิด สัญญากับพี่แซนด์ว่าจะดู application ใน OFBiz ให้ แล้วไหงหนูมาบ้า grails อยู่ตรงนี้ – -”

ต่อๆ …

ก็ต่อจากคราวที่แล้วที่สร้าง application ไปแล้ว ก็ยังคงอ่าน quick start ต่อ มาถึงเรื่อง Datasource configuration ซึ่งดูไปดูมาก็เหมือนใน rails ที่เราจะมี standard environment หลังจากที่เราทำการสร้างแอพขึ้นมา (Development, TestData, and Production) โดยมันจะอยู่ในไฟล์ DataSource.groovy และโดย default แล้วมันก็จะใช้ HSQLDB เหมาะสำหรับการ test

และก็ลอง create domain class โดยการใช้คำสั่ง

cd my-project
grails create-domain-class

มันจะ prompt ให้เราใส่ชื่อ domain class เก๋ก็ใส่ Book มันก็จะ create Book.groovy มาให้ใน grails-app/domain ก็คือทำตามที่เค้าว่าทุกอย่าง

Note1: อย่าตั้งชื่อให้เหมือนคำที่เป็น keyword ใน database เช่น ชื่อ Group
Note2: หากตั้งชื่อเป็นตัวใหญ่นำหน้า 2 ตัวติดกัน จะทำให้เกิด error บนหน้า page แต่ตั้งเป็น MyCar แบบนี้อ่ะได้ มันไม่ติดกัน

Domain class เป็น persistent artifact สำหรับ persist ลง database ซึ่งมันก็คือ GORM นั่นเอง คราวนี้เราลองมาใส่ field ใน Book.groovy ของเรา

class Book {
	String title
	String author
}

ก่อนจะใส่ title กับ author เราจะเห็นแค่ class Book ตั้งอยู่เปล่าๆ ใน Book.groovy เท่านั้น
และเราก็มาสร้าง Test data กัน โดยที่ง่ายที่สุดให้ไปดูที่ <..>/grails-app/conf/BootStrap.groovy แล้วสร้างไว้ใน init

class BootStrap {

     def init = { servletContext ->
     // Create some test data
        new Book(author:"Stephen King",title:"The Shining").save()
        new Book(author:"James Patterson",title:"Along Came a Spider").save()
     }
     def destroy = {
     }
} 

สร้าง Controller

เค้าบอกว่า controller เนี่ยเป็นตัวกลางของ Grails applications ที่ควบคุม web requests และ URLS ของ request map ไปสู่ controller class และ closure ภายใน class ซึ่งก็เหมือนกันบ rails อีก

ให้เรารันคำสั่ง grails create-controller และพิมพ์ชื่อของ controller เข้าไป เช่นหากเราใส่ชื่อ Book มันก็จะได้ BookController.groovy แล้วเราก็จะเปลี่ยนให้มันใช้ dynamic scaffold ซึ่งจะ gen application ให้เราตอน runtime (คือถ้าไม่ทำเป็น dynamic เราก็สามารถ scaffold แบบ manual ได้เช่นกัน โดยใช้คำสั่ง grails generate-all ซึ่งมันจะไม่ replace default scaffolding ให้) โดยเราจะทำดังนี้ แต่ต้องแน่ใจว่า Book ต้องขึ้นต้นด้วย B ใหญ่

class BookController {
	def scaffold = Book
}

สตาร์ท Grails

เริ่มงาน app ของเรา โดยใช้คำสั่ง

grails run-app

มันจะ start ใน Jetty servlet ที่พอร์ต 8080 หากอยาก start ใน พอร์ตอื่นให้ใช้คำสั่ง grails -Dserver.port = 9090 run-app และหากอยากดูลิสต์ของหนังสือที่เราสร้างขึ้น ก็เข้าที่

http://localhost:8080/my-project/book/list

เค้าว่ากันว่ามันจะช้าใน development mode กว่าจะไปแต่ละ page ก็ใช้เวลาหลายนาที หลังจากนี้เราอาจจะเพิ่ม maximum heap size โดย set ที่ {{JAVA_OPTS}} ที่ตัวแปร ‘-Xmx512m’ เพื่อให้ maximum heap เป็น 512

วูปี้ๆ สำเร็จ โหย หน้าตามันดีกว่า rails เยอะแยะมากมายจริงๆ เล้ยยยยยย

อีกลิงค์น่าสนใจของ Grails

Advertisements
  1. น้อยใจน้องเก๋ละหลายใจ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: