หลังจากหัดเขียน 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) ไปเหอะ งานทุกอย่างจะง่ายเอง
คืนนี้ไปหัดเขียนต่อ
เคยไปเทรนจาวามา หลายตัวก็มีตัวสร้างหน้า CRUD อย่างนี้นะ
แต่ใช้แล้วรู้สึกว่ายุ่งกว่าเขียนเองอีก
ดู ruby on Rails แล้วเออ มันตรงไปตรงมากกว่าเยอะเหมือนกันว่ะ
ลง MAMP
ลง MAMP มันจะปัญหาน้อยกว่าไหม บน mac เนี้ย MySQL มีปัญหาตลอด