Ruby on Rails, Day 1

หลังจากหัดเขียน Ruby ไปหน่อย (ประมาณ 1 วัน) แล้วทิ้งช่วงประมาณ 3 เดือนเผื่อมันจะเข้มข้น (จริงๆ ไม่เกี่ยวเลย) ก็มาถึงคิวของ Ruby on Rails (web framework สำหรับ Ruby) ซะที

การติดตั้งก็ไม่ยากนัก ลง Ruby ก่อน ตามด้วย RubyGems ซึ่งเป็นตัวจัดการแพกเกจของ Ruby จากนั้นก็ลง Ruby on Rails เหมือนเป็นแพกเกจนึง มาแนวเดียวกับ apt-get เลย

เผอิญผมใช้บนแมค ถ้าใครใช้แมคอ่านวิธีตามนี้ดีกว่า Rolling with Ruby on Rails on Mac OS X Tiger (for beginners) เท่าที่ใช้ดูมีปัญหากับ MySQL ไม่รู้เกิดจากปัญหาที่ผมเจอบน 10.4.4 หรือเปล่า เดี๋ยวค่อยไปค้นหาอีกที

ลงเสร็จแล้วก็ลุยเลยไม่ต้องคิดมาก ลองสร้างโปรแกรมตัวอย่างที่ดังที่สุดคือ Recipe ซึ่งอยู่บนเว็บ ONLamp.com ของ O'Reilly

ลองเล่นพักนึงก็เข้าใจว่าทำไมมันถึงดัง เรื่องมันมีอย่างงี้ครับ

ผมลง Ruby เสร็จ gen โครงโปรแกรมขึ้นมา สร้างตารางง่ายๆ ใน MySQL มาอันนึง จากนั้นพิมพ์โค้ด Ruby 1 บรรทัด (ย้ำว่า 1 บรรทัด) สิ่งที่ผมจะได้คือเว็บเพจแบบ dynamic ที่สามารถแสดง, สร้าง, แก้ไข, ลบข้อมูลในตาราง สำเร็จรูปโดยพิมพ์โค้ดแค่บรรทัดเดียว

ยืมคำพูดของ ONLamp มาบรรยายเหตุการณ์

Now, that is way beyond cool--it's awesome!

สรุปง่ายๆ ว่า Ruby on Rails เป็นอะไรที่หลักแหลมมาก เพราะมันมาจากไอเดียที่ว่าเว็บแอพพลิเคชันทั่วไป งานมันจะซ้ำๆ กัน พวกสร้าง, แก้ไข, ลบข้อมูลในฐานข้อมูล ดังนั้นก็มาทำให้มันสำเร็จรูปใช้ได้ง่ายๆ ซะ ต่อไปเวลาทำเว็บแอพพลิเคชันจะได้ไม่ต้องมาเสียเวลากับพวกนี้ เอาหัวไปทำอะไรที่จำเป็นดีกว่า

สมมติว่าผมมีคลาส Recipe เจ้า RoR จะสร้าง URL ที่ชื่อ localhost/project/recipe ให้อัตโนมัติ (แถม /Recipe ให้ด้วย) เท่านั้นยังไม่พอ มันต่อกับตาราง recipes ในฐานข้อมูลให้อัตโนมัติ (สังเกต s)

อย่างงี้ผมก็เรียก awesome! เหมือนกันแหละ

แนวคิดของ RoR ใช้วิธี Model-Controller-View ซึ่งผมไม่เคยเขียน แต่เท่าที่อ่านดูมันทำให้โค้ดสะอาดและอ่านง่ายกว่าเดิมเยอะ (ถ้าใครเคยเขียน PHP น่าจะนึกออกว่าโค้ดมันเละๆ)

เขียน RoR เลยเหมือนจะมีข้อควรทำว่า เขียนตาม template ที่กำหนด (พวกการตั้งชื่อตัวแปรหรือ method) ไปเหอะ งานทุกอย่างจะง่ายเอง

คืนนี้ไปหัดเขียนต่อ

Submitted byLewCPEon Fri, 02/24/2006 - 19:17

เคยไปเทรนจาวามา หลายตัวก็มีตัวสร้างหน้า CRUD อย่างนี้นะ

แต่ใช้แล้วรู้สึกว่ายุ่งกว่าเขียนเองอีก

ดู ruby on Rails แล้วเออ มันตรงไปตรงมากกว่าเยอะเหมือนกันว่ะ

ลง MAMP มันจะปัญหาน้อยกว่าไหม บน mac เนี้ย MySQL มีปัญหาตลอด