Ruby คือ http://campus.en.kku.ac.th/campusboard/viewtopic.php?t=1381
Rails คือ Framwork สำหรับการสร้าง Web Application ,Web Services,AJAX ,Web DB base ที่ใช้งานง่าย ติดตั้งง่าย เร็ว โดยบนเครื่องของผู้ใช้มีเพียงแค่ Ruby Interpreter Download >> ([url]http://rubyforge.org/frs/?group_id=167[/url]) เลือกติดตั้ง [color=green]ruby184-19.exe[/color]
เมื่อ Download และติดตั้งเสร็จแล้วจะได้

- FreeRIDE ( Free Ruby IDE) ติดมาให้สำหรับเขียน Ruby โดยเฉพาะ

- SciTE เป็น Editor สำหรับแก้ไข Ruby Script และสามารถใ้ช้เปิดไฟล์ภาษาอื่น ไ้ด้อีกด้วย
- fxri (Interactive Ruby Help & Console) เอาไว้เขียน Ruby แบบ Interactive Coding

- RubyGems (packaged Ruby application or library) เป็นตัวจัดการกับ package และ library ต่างๆ โดยเราสามารถทำการ ค้นหา ติดตั้ง ลบ เรียกดู package และ library ที่อยู่บนเครื่องของเราได้ โดยปกติแล้วถ้าเรา่จะติดตั้ง Rails เพิ่มเข้าไป เราก็จะใช้ RubyGem ในการ download Rails Framwork มาติดตั้งที่เครื่องของเรา ซึ่งจะใช้คำสั่ง สั้นๆ คือ gem install rails เป็นต้น
- RubyGems Rdoc Server จะเป็น Web base (port localhost:8808) ที่อยู่บนเครื่องของเราซึ่งจะเก็บ document ต่างๆ เช่น document ของ library คล้ายกับ JAVA API แต่ใช้งานง่ายกว่า (RubyGems Rdoc Server run on WEBrick)

- Ruby WEBrick เป็น Web HTTP Server ของ Ruby ทำให้เราไม่ต้องติดตั้ง Apache HTTP Server หรือ ถ้าไม่ชอบ WEBrick เราอาจจะ Config ให้ Ruby ทำงานร่วมกับ Apache HTTP Server ก็เองได้
เริ่มติดตั้ง Ruby กันได้เลยนะครับ [url]http://rubyforge.org/frs/?group_id=167[/url]
โดยโปรแกรมจะติดตั้งไปที่ c:/>ruby
ติดตั้ง rails จาก gem package management โดยเปิด RubyGems Package Management ขึ้นมาก่อน จากนั้นก็พิมพ์
gem install rails --include-dependencies
เพื่อเป็นการ Download และติดตั้ง rails + files ที่ rails ต้องใช้ร่วมในการทำงาน (คล้าย apt-get,emerge ใน Linux)
โดย rails จะถูกดาวส์โหลดและติดตั้งไว้ที่
[color=red]C:\ruby\lib\ruby\gems\1.8\gems\rails-1.1.4[/color]
จากนั้นก็ทำการเปิด command line ขึ้นมาเพื่อที่จะเริ่มทำการกำหนดค่าเริ่มต้นสำหรับการทำงาน
เริ่มต้นด้วยการ set path ให้กับ rail ก่อน และตามด้วยการสร้าง root directory ให้กับ rails ด้วยคำสั่ง [color=orange]rails [root_directory_name][/color]
---------------------------------------------------------------------------------------
##########################################################
c:/>set path=%path%;C:\ruby\lib\ruby\gems\1.8\gems\rails-1.1.4\bin
c:/>mkdir rails
c:/>cd rails
c:/rails>rails campusboard
##########################################################
-------------------------------------------------------------------------------------
จากด้านบน จะเป็นการสร้าง root directory ที่ชื่อ campusboard ซึ่งสามารถตั้งชื่อเป็นอะไรก็ได้นอกเหนือจากที่ตั้งไว้ตั้งกล่าว
เนื่องจากว่า rails ต้องทำงานกับ web http server ผู้ใช้สามารถนำ WEBrick ซึ่งมาพร้อมกับ ruby
และสั่ง WEBrick ให้ทำงาน หรือ อาจจะใช้กับ Apache ก็ได้แต่ก็ต้องมีการ Config เพิ่มเติม แต่ในที่นี้จะใช้ WEBrick
----------------------------------------------------------------------------------------
###########################################################
c:/rails>cd campusboard
c:/rails/campusboard>ruby script\server
###########################################################
-----------------------------------------------------------------------------------------
จากด้านบนเป็นการ start web server ให้ตรวจสอบการทำงานได้ที่ http://localhost:3000/ ก็จะเข้าสู่หน้า Welcome aboard

ให้ลองเปิดเข้าไปดูใน c:/rails/campusboard จะเห็น directory ดังนี้ (รูปประกอบด้านล่าง)

-> app ,เก็บ script ที่จะถูก user เรียกใช้งาน
-> components ,เก็บ component ต่างๆ ของ rails
-> config ,เก็บไฟล์ config ต่างๆ ของ rails เช่น config database
-> db ,เก็บข้อมูล
-> doc ,เก็บเอกสารการใช้งาน
-> lib ,เก็บ library ที่จะถูกเรียกใช้โดย rail หรือ script ที่เขียนขึ้นมา
-> log ,เก็บ log การทำงาน
-> public , เก็บไฟล์จำพวก html เหมือนกับ htdocs ใน apache
-> script , เก็บ script สำหรับควบคุมการทำงานของ rail เช่น start WEBrick web server เป็นต้น
-> test , เก็บตัวอย่าง หรือ demo
-> tmp , ที่พักข้อมูลชั่วคราว
-> vendor , เก็บ detail ของ vendor และรายละเอียด ของ detail
ภายใต้ app directory จะเก็บ script ที่ใช้ในการจัดการกับ request ที่ผู้ใช้เรียกเข้ามา (user request handle ) ส่วนใหญ่แล้วเวลาเราเขียน application ใดๆ ก็จะเอา script มาเก็บไว้ในไฟล์นี้ หรือ อาจจะกล่าวได้ว่าเป็น directory ที่จะถูกนำมาใช้งานมากที่สุด และเราจะเข้าไปดูใน subdirectory ของ app (รูปประกอบด้านล่าง)

- app/controller ,เก็บ script ที่จะจัดการกับ request
- app/views ,เก็บ Template ของการแสดงผลต่างๆ ที่จะถูก convert ออกมาเป็น from/html
- app/models ,เก็บ class ที่เป็น model สำหรับ data stored
- app/helpers ,เก็บ helper class ต่างๆ ที่จะช่วยให้นักพัฒนาเขียนโค้ดได้สะดวกขึ้น
ก่อนที่เราจะไปทำการติดตั้ง mysql driver ให้กับ ruby เราจะมาทำการเขียน script สำหรับ control user request ขึ้นมาก่อน 1 ตัว เพื่อให้ได้มองเห็นภาพมากขึ้น
ให้ทำการเปิด command ขึ้นมา และเข้าไปที่ direcotry ของ rails และเรียกใช้ script ที่ชื่อ generate เพื่อช่วยในการสร้าง handle script ให้เราโดยเราจะสร้าง handle script ที่ชื่อว่า MyTest
---------------------------------------------------------------------------------------
##########################################################
c:/rails/campusboard>ruby script\generate controller MyTest
exists app/controllers/
exists app/helpers/
create app/views/my_test
exists test/functional/
create app/controllers/my_test_controller.rb
create test/functional/my_test_controller_test.rb
create app/helpers/my_test_helper.rb
##########################################################
---------------------------------------------------------------------------------------
จากด้านบน rails จะมีการสร้างไฟล์ให้เราขึ้นมาให้เรา 4 ไฟล์ โดยไฟล์ที่เราจะต้องทำการเขียนเพิ่ม คือ my_test_controller.rb ซึ่งเป็น request controller ที่นักพัฒนาต้องเขียนเอง
ให้เข้าไปที่ c:\rails\campusboard\controllers directory จะพบไฟล์ my_test_controller.rb เมื่อเปิดไฟล์นี้ขึ้นมาจะพบเนื้อหาดังนี้
---------------------------------------------------------------------------------------
##########################################################
class MyTest2Controller < ApplicationController
end
##########################################################
---------------------------------------------------------------------------------------
ให้เพิ่ม function ต่อไปนี้เข้าไปใน my_test_controller.rb
---------------------------------------------------------------------------------------
##########################################################
class MyTest2Controller < ApplicationController
def index
render_text "Hello RubyOnRails"
end
end
##########################################################
---------------------------------------------------------------------------------------
จากด้านบนจะเห็นว่าได้เพิ่มส่วนของ function ที่ชื่อ index โดยฟังก์ชั่นนี้จะทำการส่งข้อความ "Hello Ruby on Rails" ออกมาทาง Web Browser เมื่อผู้ใช้ เปิดไปที่
url : http://localhost:3000/My_Test โดย default จะมีการเรียกใช้ function index ถ้าไม่ทำการกำหนด url อื่นๆ หรือ อาจจะพิมพ์ดังนี้ก็ได้
http://localhost:3000/My_Test/index ก็จะให้ผลเช่นเดียวกัน
ให้ทำการเพิ่ม fuction index2 เข้าไปใน my_test_controller.rb และเปิดด้วย web browser อีกครั้ง
---------------------------------------------------------------------------------------
##########################################################
class MyTest2Controller < ApplicationController
def index
render_text "Hello RubyOnRails"
end
def index2
render_test "Goobye RubyOnRail
end
end
##########################################################
---------------------------------------------------------------------------------------
ทดสอบโดยการเปิด url : http://localhost:3000/My_Test/index2
จะได้ผลลัพธ์ออกมาเป็น "Goobye RubyOnRail
เมื่อเปิดหน้าแรกของ rails ได้แล้ว ( http://localhost:3000/) ต่อไปจะเป็นการ config ค่าให้กับ rail โดยปกติแล้วเรามักจะใช้ rails กับ database mysql แต่เนื่องจาก ruby ไม่ได้ติดตั้ง mysql driver สำหรับ ruby มาให้จึงจำเป็นต้องทำการติดตั้ง mysql driver for ruby ก่อน โดยเปิด RubyGems Package Manager ขึ้นมาและพิมพ์
*** Gem จะถามเราว่าเราต้องการติดตั้งแบบไหนให้เราเลือกหมายเลข 1 คือ mysql 2.7.1 (mswin32) เมื่อเสร็จขึ้นตอนนี้ Ruby ของเราก็สามารถติดต่อกับ MySQL ได้ จากนั้นให้เราทำการสร้างฐานข้อมูลขึ้นมาหนึ่งตัวพร้อมกับ User Name และ Password ให้กับ MySQL (Support 4.1-5.0 )
---------------------------------------------------------------------------------------
##########################################################
c:/ruby>gem install mysql
Select which gem to install for your platform (i386-mswin32)
1. mysql 2.7.1 (mswin32)
2. mysql 2.7 (ruby)
3. mysql 2.6 (ruby)
4. mysql 2.5.1 (ruby)
5. Cancel installation
> 1
Successfully installed mysql-2.7.1-mswin32
Installing ri documentation for mysql-2.7.1-mswin32...
Installing RDoc documentation for mysql-2.7.1-mswin32...
############################################################
------------------------------------------------------------------------------------------
ต่อไปให้สร้างฐานข้อมูลขึ้นมาก่อน 1 ตัว (เครื่องของคุณต้องติดตั้ง MySQL ก่อนและซึ่งควรจะเป็นเวอร์ชั่น 4.1 ขึ้นไป จนถึง 5.0)
โดยสร้างฐานข้อมูลที่ชื่อ campusboard และสร้าง username,password ขึ้นมาก 1 user โดยผมจะสร้างusername=ruby ,password=rubyonrails และกำหนดสิทธิ์ให้ทำได้ทุกอย่างเท่า admin
ตอนนี้เราก็จะมีฐานข้อมูลของ mysql ที่ชื่อ campusboard สิ่งที่เราจะต้องทำต่อไป คือ บอกให้ rails รู้จักกับฐานข้อมูลตัวนี้โดยจะต้อง config file ที่อยู่ใน diretory
c:\rails\campusboard\config\ ชื่อไฟล์ database.yml และทำการ config file ตามที่เราได้สร้างฐานข้อมูลและ username,password (รูปประกอบด้านล่าง)

ปกติแล้ว rails อนุญาติให้เราสามารถรันใน mode ต่างได้ 3 mode คือ development mode, test mode และ production mode โดยให้มีฐานข้อมูลที่แตกต่างกันได้ แต่
สำหรับการทดลองนี้เราจะใช้เพียงฐานข้อมูลเดียวก่อน คือ campusboard
ขออธิบายเพิ่มเติมเกี่ยวกับ concept ของการสร้าง Web ฺBase ด้วย rails ก่อนนะครับ
ของยกตัวอย่างการเขียน web base ด้วย php ก่อนนะครับ สมมติว่าเราจะพัฒนาเว็บบอร์ดขึ้นมา เราต้องเริ่มจากการสร้างฐานข้อมูล สร้างตาราง จากนั้นก็เขียนโปรแกรมเพื่อ
ให้ติดต่อกับฐานข้อมูล ซึ่งต้องมีความรู้เกี่ยวกับ SQL (select insert delete update) และก็ต้องออกแบบส่วนติดต่อกับผู้ใช้เช่น form input submit จะยุ่งยากมากถ้าเรารับ
ข้อมูลเป็นชนิด Date
แต่สำหรับ rails เราไม่ต้องเขียน sql เพื่อ select insert delete update ข้อมูลเข้าสู่ฐานข้อมูล เราไม่ต้องทำการออกแบบส่วนติดต่อกับผู้ใช้ เช่น form input submit ทุกอย่างนี้
rails จะทำให้เราหมด และเราก็ยังสามารถทำการปรับแต่งได้ตามความเหมาะสม
ในการพัฒนาเว็บเบสด้วย rails จะมีขั้นตอนง่ายๆ ดังนี้
1.สร้าง ตาราง ในฐานข้อมูลสำหรับเก็บข้อมูล
2.สร้าง model recode สำหรับเป็นส่วนติดต่อกับตาราง (Mapping Database Table with Ruby Script helper)
3.สร้าง controller สำหรับการ handle request จากผู้ใช้
4.สร้างส่วนติดต่อกับผู้ใช้ ใน rails จะเรียกว่า view (หรืออะไรก็ตามที่ผู้ใช้มองเห็น)
ในการทดลองนี้เราจะสร้างเว็บบอร์ดอย่างง่ายโดยมีโครงสร้างเว็บดังนี้
table forums [id,name,description]
table topics [id,name,description,fk_fid]
table posts [id,postby,postdate,content,fk_tid]
sql script ของเว็บบอร์ดมีดังนี้
CREATE TABLE `forums` (
`id` int(10) unsigned NOT NULL,
`name` varchar(100) NOT NULL default '',
`description` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=tis620;
CREATE TABLE `posts` (
`id` int(10) unsigned NOT NULL default '0',
`postby` varchar(100) NOT NULL default '',
`postdate` date NOT NULL default '0000-00-00',
`content` text NOT NULL,
`tid` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `FK_tid` (`tid`),
CONSTRAINT `FK_tid` FOREIGN KEY (`tid`) REFERENCES `topic` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=tis620;
CREATE TABLE `topics` (
`id` int(10) unsigned NOT NULL default '0',
`name` varchar(100) NOT NULL default '',
`description` varchar(100) NOT NULL default '',
`fid` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`tid`),
KEY `FK_fid` (`fid`),
CONSTRAINT `FK_fid` FOREIGN KEY (`fid`) REFERENCES `forum` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=tis620;
หลังจากเสร็จคำสั่งนี้แล้วเราก็จะได้ model class ขึ้นมา 3 class ซึ่งทั้งสามตัวนี้จะถูก mapping กับฐานข้อมูลที่เราได้สร้างขึ้นมาอัตโนมัติ โดย rails จะสร้าง model class ไว้ที่
C:\rails\campusboard\app\models (รูปประกอบด้านล่าง)

ลองเปิดเข้าไปดูในไฟล์ forum.rb เราก็จะพบ code สองบรรทัด (รูปประกอบด้านล่าง)

สร้าง controller สำหรับการ handle request จากผู้ใช้ให้กับ model ทั้ง 3 class ที่ผ่านมาด้วยคำสั่ง ruby script\generate controller [model name] ตัวอย่าง ตามข้างล่าง
##################################################################
C:\rails\campusboard>ruby script\generate controller Forum
exists app/controllers/
exists app/helpers/
create app/views/forum
exists test/functional/
create app/controllers/forum_controller.rb
create test/functional/forum_controller_test.rb
create app/helpers/forum_helper.rb
C:\rails\campusboard>ruby script\generate controller Topic
exists app/controllers/
exists app/helpers/
create app/views/topic
exists test/functional/
create app/controllers/topic_controller.rb
create test/functional/topic_controller_test.rb
create app/helpers/topic_helper.rb
C:\rails\campusboard>ruby script\generate controller Post
exists app/controllers/
exists app/helpers/
create app/views/post
exists test/functional/
create app/controllers/post_controller.rb
create test/functional/post_controller_test.rb
create app/helpers/post_helper.rb
###################################################################
เมื่อเปิดเข้าไปดูใน c:/rails/campusboard/app/controllers/ จะพบไฟล์ controller 3 ไฟล์ (รูปประกอบด้านล่าง)

จากนั้นให้เปิดไฟล์ทั้ง 3 ขึ้นมาและให้ทำการแก้ไข โดยการเพิ่มบรรทัดด้านล่างนี้เข้าไปในแต่ละไฟล์
scaffold:forum -> forum_controller.rb
scaffold:topic -> topic_controller.rb
scaffold:post -> post_controller.rb
(รูปประกอบด้านล่าง)

เมื่อแก้ไขเสร็จให้ทำการ save และทดสอบการทำงานโดยการเปิด web browser ไปที่
http://localhost:3000/forum
http://localhost:3000/topic
http://localhost:3000/post
สิ่งที่พบก็ คือ rail สร้างส่วนสำหรับการ list insert update delte ให้เลยเสร็จสับ



สิ่งที่พบก็ คือ rail สร้างส่วนสำหรับการจัดการ list insert update delete ข้อมูลให้เราทั้งหมดเลยโดยที่เราไม่ต้องไปยุ่งเกี่ยวกับ การเขียน sql เองแต่อย่างใด ส่วนที่เราจะต้องทำและจัดการต่อไปคือ การจัดรูปแแบการแสดงผลตามที่เราต้องการ
edit @ 2006/07/14 15:19:49