แนะนำ Ruby on rails

Ruby คืออะไร

  • เป็นภาษาคอมพิวเตอร์ที่มีลักษณะเป็นโปรแกรมแปลภาษา (interpreter) เหมือนกับ Perl, Python,Java
  • เป็นภาษา script object oriented เป็นภาษาที่มี Syntax ที่สั้น กระชับ ไม่ซับซ้อน
  • Ruby มักมีรูปแบบ Syntax คล้ายกับภาษา Perl และ Python โดยรวมข้อดีของ Perl และ Python ไว้ มักมีผู้บอกว่าสิ่งไหนที่มีใน Perl แต่ไม่มีใน Python หรือสิ่งไหนที่มีใน Python แต่ไม่มีใน Perl มักจะพบอยู่ในภาษา Ruby

ที่มาของภาษา Ruby

  • Ruby ถูกคิดค้นและพัฒนาในประเทศ ญี่ปุ่น โดย Yukihiro Matsumoto
  • 1993, February 24: Yukihiro Matsumoto (“Matz”) started to work on Ruby.
  • 1993, Summer: First “Hello, world!” program works.
  • 1995, December: First release 0.95.
  • 1996, December: 1.0 is released.
  • 1999: Supposedly overtakes Python in Japan.
  • 2000: The first official newsgroup.
  • 2000-2001: Several books and magazine articles published.
  • 2003, August 4: 1.8.0 is released.
  • 2005, December 24 : 1.8.4 is released

Ruby On Rails (Rails or ROR) คืออะไร

  • เป็นโอเพนซอร์ส web application framework ที่พัฒนาด้วยภาษา Ruby
  • มีลักษณะของ Model-View-Controller(MVC) architecture
  • สนับสนุนให้แอพลิเคชั่นในโลกถูกพัฒนาด้วยโค้ดที่น้อยลงกว่าเฟรมเวิร์คอื่น และมี configuration น้อยที่สุด เพื่อความง่ายต่อการประยุกต์ใช้
  • มีหลักการของ “Don’t Repeat Yourself” (DRY) คือ สิ่งไหนที่รู้แล้ว ก็จะไม่ทำซ้ำ
    • Don’t Repeat Yourself หมายความว่า ถ้าคิดว่าถูกแล้วก็ไม่ควรทำซ้ำ เช่น ถ้ามองในโคดภาษา JAVA,C++ จะเห็น semicolons (;) ทุกๆที่ เพื่อบอกว่าจบบรรทัด แต่ Ruby บอกว่า ฉันรู้แล้วว่าจบบรรทัด เพราะผู้เขียนได้กดแป้น Enter เพื่อที่จะเริ่มบรรทัดใหม่ ดังนั้นมันจึงบันทึกการเคาะแป้นพิมพ์ ซึ่งใน Rails มีบางข้อตกลงที่เข้าใจระหว่างคุณและคอมพิวเตอร์
  • Rails เป็นอันดับหนึ่งของการเผยแพร่ ผ่าน RubyGems (เป็นตัวจัดการ package ในภาษา Ruby ที่จะดูในเรื่องของ รูปแบบของ packaging และมี Libraries ไว้ให้ใช้มากมาย

ประวัติความเป็นมาของ ROR

  • Rails ถูกพัฒนาโดย David Heinemeier Hansson
  • version 1.0 13 ธันวาคม 2005
  • version 1.1 28 มีนาคม 2006

Web application framework คืออะไร

Framework เป็นโครงสร้างของโปรแกรม โปรแกรมเมอร์ส่วนใหญ่ ใช้เวลาส่วนมากของการพัฒนา web application ไปกับการเขียนโปรแกรมโดยทั่วไป มากกว่าฟังก์ชันพิเศษ ดังนั้นการนำชิ้นส่วนของ code เดิมกลับมาใช้ (Reusable) จึงได้รับความนิยม ในการสร้าง web application โดยตัว Component ที่นำกลับมาใช้ใหม่นี้ จะเรียกว่า “framework” Framework ที่ดีต้องง่ายในการเพิ่ม แก้ไข เปลี่ยนแปลง ในส่วนของ application

Rails framework

  • Form data validation (การตรวจสอบข้อมูลใน form)
  • Application template (การสร้าง template ด้วย CSS?)
  • Email sending and receiving (การจัดการ รับ-ส่ง email)
  • Date and time formatting and manipulation (รูปแบบของวัน – เวลา)
  • Session and cookie management (การจัดการ session , cookie )
  • สนับสนุนการทำงาน Web 2.0 ด้วย AJax

MVC architecture

mvc22.gif

Model

ใน object oriented การใช้เว็บ database-driven จะเป็นแบบ MVC ซึ่ง Model จะประกอบด้วย class ที่เชื่อมต่อกับ RDBMS ใน Ruby On Rails class model จะถูกจัดการผ่านทาง Active Record (เป็นตัวเข้าถึงข้อมูลในฐานข้อมูล) ซึ่งโปรแกรมเมอร์ทุกคนควร ต้องทำเป็น subclass คือ ActiveRecord?::Base class และโปรแกรมจะเข้าใจอัตโนมัติว่าจะใช้ตาราง RDBMS อันไหน และเรียกคอลัมภ์ต่างๆในตารางเอง

ใน Model มีการติดต่อกับ Active Record เพื่อช่วยจัดการงานด้าน Database เช่น

  • ดูแลในเรื่องของการติดต่อสื่อสารระหว่าง Object และ Database โดยที่ผู้พัฒนาไม่ต้องยุ่งยากกับการใช้ SQL command
  • เป็นงานด้านการตรวจสอบความสัมพันธ์ของข้อมูล มีผลกับฐานข้อมูล
  • Handles validation(ตรวจสอบความถูกต้อง), association(ความสัมพันธ์ระหว่างฐานข้อมูล), transactions, and more…

View

  • เป็นส่วนที่ต้องแสดงผลผ่าน web browser
  • เขียนด้วยพื้นฐานของ HTML(.rhtml), แทรกด้วย script ของ ruby คล้าย PHP,JSP,ASP
  • การทำงานสัมพันธ์อยู่กับ controller
  • นำ component มาใช้ใหม่ได้ (Reusable)
  • สนับสนุน Ajax
  • View เป็นการแสดงผลทาง logic หรือ การทำอย่างไรให้ข้อมูลจาก Controller class ถูกแสดงผล วิธีการใน Rails จะใช้ Embedded Ruby (ไฟล์นามสกุล .rhtml) ซึ่งก็เป็นพื้นฐานจาก HTML และด้วยไวยากรณ์ (syntax) ที่คล้าย JSP นอกจากนี้ด้วยยังสนับสนุนการใช้ HTML และ XML
  • สำหรับ method ที่อยู่ใน class ของ controller หากต้องการที่จะแสดงผลแก่ผู้ใช้ จึงจำเป็นต้องเขียน code ย่อยขึ้นมา และเก็บในโฟลเดอร์ของ view นี้เอง โดยจะต้องตั้งชื่อไฟล์นี้ เป็นชื่อเดียวกันกับ method ใน controller ที่ต้องการให้มี output ในการแสดงผล เช่น
    • ใน controller mysite มีการกำหนด method ที่มีชื่อว่า index,home,contact เป็นต้น โดยทั้ง 3 method ต้องมีการแสดงผลต่างกัน ดังนั้น โปรแกรมเมอร์ต้องเขียนไฟล์ในการแสดงผลใน โฟลเดอร์ view 3 ไฟล์ ได้แก่ index.rhtml , home.rhtml , contact.rhtml เป็นต้น
    • นอกจากนี้ยังสามารถกำหนด stysheet และ template เพื่อให้งานเว็บแอพลิเคชั่นนั้นมีมาตรฐานเดียวกันทั้งหมด ในกรณี template จะสร้างไฟล์ ที่เป็นตัวกำหนด header, content, footer ไว้ที่โฟลเดอร์ layout ภายใต้โฟลเดอร์ view ซึ่งลักษณะการทำงานของไฟล์นี้ จะถูกเรียกใช้ในการแสดงผลทุกครั้ง เป็นต้น

Controller

  • เป็นส่วนที่ทำงานเป็นอันดับแรกเมื่อมีโปรแกรมถูกเรียก จาก Web browser
  • เป็นส่วนที่ติดต่อการทำงานระหว่างผู้ใช้และโปรแกรม
  • มีการติดต่อกับ Database(ฐานข้อมูล) ด้วย Model และแสดงผลข้อมูลผ่านทาง View
  • เป็นส่วนที่มีการประมวลผลหลัก ของโปรแกรม

การทำงานของ Ruby On Rails

ภาพรวมของการทำงาน

rails_work22.gif

  1. Client หรือผู้ใช้ร้องขอข้อมูลทาง Web site
  2. Web server รับการร้องขอในรูปแบบต่างๆ ผ่านทาง HTTP,RSS,ATOM หรือ SOAP
  3. Web server ส่งต่อไปยังไฟล์ที่ชื่อว่า dispatcher ที่อยู่ใน Rails ซึ่งเป็นไฟล์สำหรับโหลด Controller ให้ทำงาน
  4. ไฟล์ Dispatcher ทำงาน โดยจะโหลดตัว Controller ที่อยู่ใน Rails ขึ้นมา
  5. Controller เป็นส่วนแรกของการทำงานแบบ MVC ติดต่อกับ Model และ View หน้าที่คือการประมวลผลหลักของโปรแกรม ซึ่งการทำงานขึ้นอยู่กับสิ่งที่ผู้ใช้ร้องขอมา เช่น
    • ถ้าผู้ใช้ร้องขอ ข้อมูลใน Database
      • Controller จะติดต่อไปยัง Model
      • Model ก็จะมีตัว Active Record สำหรับจัดการทุกอย่างที่เกียวข้องกับ Database
      • สุดท้ายก็จะส่งข้อมูลที่ได้จาก Model กลับไปให้ Controller
      • Controller ส่งผลลัพธ์กลับไปยังผู้ใช้ผ่าน View
    • ถ้าผู้ใช้ ร้องขอข้อมูลในรูปแบบของ Webservice
      • Controller จะมีการทำงานโดยใช้ Action Web service
      • และส่งผลลัพธ์กลับไปยังผู้ใช้ผ่าน View
    • ถ้าเป็นในรูปแบบของ Mail
      • Controller จะใช้ Active mailler สำหรับจัดการ การรับ-ส่ง Email
      • Refresh ตัวมันเอง
  6. สุดท้ายข้อมูลต่่างๆ ที่ผ่านการประมวลผลใน Controller แล้ว จะถูกส่งมายังส่วนของ View
  7. View ส่งข้อมูลกลับมายัง Web browser เพื่อแสดงผลกับผู้ใช้งาน ซึ่งรูปแบบการแสดงผลก็ได้แก่ HTML,CSS,Javascript,Image,XML เป็นต้น

Environment

ไฟล์การ Config

  • database.yml
  • environment.rb
  • production, test, development mode

โครงสร้างไดเรกทอรี

  • app/controllers/
  • app/helpers/
  • app/models/
  • app/views/
  • config/
  • lib/
  • public/
  • test/
  • components/
  • script/
  • vendor/

การสนับสนุนต่างๆของ Ruby On Rails

Database

  • MySQL?
  • PostgreSQL?
  • SQLite
  • SQL Server
  • DB2
  • Oracle

OS

  • Windows
  • Unix/Linux
  • Mac OS X

Web server

webserver22.gif

  • จากภาพเป็นการเปรียบเทียบ Web server ที่สามารถทำงานได้กับ ROR
  • การพัฒนา Web aplication ในขั้น Basic ขอแนะนำให้ใช้ WEBrick เนื่ิองจากเป็น Web server ที่มีมากับ rails อยู่แล้ว จึงง่ายมากสำหรับการ set up
  • การพัฒนา Web aplication ในขั้นสูงสามารถใช้ได้ทั้ง Apache และ Lighttpd แต่ว่าขอแนะนำให้ใช้ตัวหลัง เนื่องจากมีประสิทธิภาพ รองรับขนาดของงานได้มากกว่า จึงมีประสิทธิภาพสูงกว่า แต่อาจยุ่งยากในการ set up เท่านั้น

สรุปข้อดีของ Ruby On Rails

  • Code เขียนง่าย ไม่ซับซ้อน เมื่อเทียบกับ java
  • ถ้า Code สั้น ดังนั้นโอกาสในการเกิด Bug จึงน้อย
  • เป็น Open source
  • มี Library ให้นำไปใช้เป็นจำนวนมาก
  • ง่ายต่อการนำไปขยายและพัฒนาต่อ (extend)
  • เป็น pure Object Oriented

สรุปข้อเสียของ Ruby On Rails

  • ผู้พัฒนาต้องการเรียนรู้ตามโครงสร้างของ Rails
  • Ruby มี Library ให้เรียกใช้น้อยกว่าภาษาอื่น