หน้าเว็บ

วันศุกร์ที่ 18 กรกฎาคม พ.ศ. 2557

เริ่มใช้ Rails

มี project ส่วนตัวที่อยากทำออกมาให้เป็น web app
ตั้งใจว่าจะใช้ sinatra เหมือนที่เคยทำกับ project ก่อน แต่ก็ต้องเปลี่ยนใจกลับมาลองใช้ Rails อีกครั้ง

จริงๆ แล้วเคยลองใช้มาก่อนช่วง Rails 2.0 ออกใหม่ (ตอนนี้ 4.1 แล้ว) แล้วไม่ค่อยประทับใจ
ในตอนนั้น รู้สึกว่าต้องเสียเวลาทำความเข้าใจกับการ config ที่เยอะมาก MVC ก็ยังงงใช้ผิดๆ ถูกๆ และเหมือนถูกบังคับให้ต้อง migrate database อยู่บ่อย ๆ ซึ่งในตอนนั้นยังมองไม่เห็นภาพ ไม่รู้ว่าทำเพื่ออะไร
ซึ่งเมื่อเปรียบเทียบกับ sinatra ผมรู้สึกว่าชีวิตมันง่ายกว่า เข้าใจถึงคำว่าเบากว่า (lighweight) ขึ้นมาเลย

อย่างไรก็ตาม หลังจากที่ลองศึกษาข้อมูลเพิ่มขึ้นเรื่อยๆ ทำให้เกิดอาการอยากลองของดูอีกสักครั้ง
ตอนนี้กำลังไล่อ่าน tutorial ของ Rails อยู่จากหลายๆ แหล่ง หลักๆ เลยตามอยู่ที่ Ruby On Rails Tutorial (อ่าน online ฟรี :) )

ยังคงเกิดความรู้สึกเดิมคือ ทำไมมันเยอะ จะเยอะจะเทอะไปไหน
คือจะ build web app นี่ต้อง dependency เยอะอย่างงี้เลย ? (gem มากมาย รายการใน Gemfile ยาวขึ้นทุกที)
แต่ เอาน่ะ ไหนๆ จะลองแล้วคราวนี้อยากเอาให้สุดซะที



...

เบื้องต้นพอจะสรุปขึ้นตอนเบื้องต้นในการ Build web app ด้วย Rails ได้ดังนี้

1. สร้าง Rails project
 $ rails new my_app

Rails จะสร้าง project folder และไฟล์ที่ต้องใช้ ในนั้นมี Test::Unit รวมอยู่ด้วย แต่เนื่องจากผมกะจะใช้ rspec ในการ test ซึ่งจะเพิ่มเป็น gem เข้ามาในตอนหลัง ดังนั้นผมจึงรันคำสั้งในการสร้าง project ใหม่โดยไม่ติดตั้ง Test::Unit ดังนี้
 $ rails new my_app --skip-test-unit

2. (optional) รีวิว gem ใน Gemfile ให้ดีก่อนว่าจะใช้ gem version ไหนระบุให้แน่จะได้ไม่ขัดข้องทีหลัง
เนื่องจากผมจะใช้ rspec อย่างที่บอก จึงต้องระบุ gem ที่เกี่ยวข้องลงไปใน Gemfile ด้วย ซึ่งได้แก่ rspec-rails, selenium-webdriver, capybara 3 ตัวนี้เป็น gem ที่ช่วยในการรัน test แต่อย่าเพิ่งถามว่ามันเป็นอย่างไร อะไรกันบ้าง ขอ setup ให้เสร็จก่อน

ภายใน Gemfile ของผมจะระบุเพิ่มไว้ประมาณนี้
 ...
 ...
 group :development, :test do
   gem 'sqlite3', '1.3.8'
   gem 'rspec-rails', '2.13.1'
 end
 
 group :test do
   gem 'selenium-webdriver', '2.35.1'
   gem 'capybara', '2.1.0'
 end
 ...
 ...

จากนั้นรัน bundle เพื่อ update และ install
 $ bundle update
 $ bundle install

3.  ตั้งค่า Rails เพื่อให้ใช้ RSpec
 $ rails generate rspec:install

4.Initialize Git
 $ git init
 $ git add .
 $ git commit -m "Initial project"

คุณควรมี GitHub account เพื่อง่ายต่อการ deploy Rails app ขึ้นไปไว้บน web server
ในที่นี้ app ของผมจะรันบน Heroku ซึ่งเป็น Cloud platform service เนื่องจากเป็นวิธีเดียวกับที่ผมอ่านใน tutorial อยู่ และ deploy ง่าย
ใครยังไม่มี account ผมแนะนำให้ sign up ไว้นะครับ เพราะเราสามารถใช้ทดลองรัน web app ได้ฟรี (แต่ใช้จริงจังนี่ไม่ไหว แพงเกิน)

ปล. มี plan ว่าจะลอง deploy บน digital ocean อยู่เหมือนกัน ถ้าผมทำเมื่อไหร่แล้วจะมาเล่าให้ฟังวันหลัง

5. สร้าง repository สำหรับ project นี้ บน Github ในที่นี้ตั้งชื่อมันว่า my_app
จากนั้น push ขึ้นไป

 $ git remote add origin https://github.com//my_app.git
 $ git push origin master

6. Deploy app ขึ้นไปบน Heroku
 $ heroku create
 $ git push heroku master
 $ heroku run rake db:migrate

7. เริ่มสร้างและปรับปรุงหน้าเพจ ภายใต้โมเดล MVC
ในขั้นตอนนี้คุณอาจสั้งให้ Rails สร้างเพจตัวอย่างขึ้นมาให้เลยก็ได้โดยใช้คำสั่ง scaffold
scaffold เป็นการสร้าง object model, view และ control แบบอัตโนมัติให้กับ web app ของคณ

ตัวอย่างของ object model ใน web app เช่น ถ้า web app ของคุณเป็นหน้าร้านขายของ model ที่คุณต้องมีอาจจะเป็น User, Product, Order เป็นต้น

การสร้าง model จึงเปรียบได้กับ (หรือจริงๆ แล้วก็เป็น) การสร้าง table ลงไปใน database ซึ่งมีรายละเอียดจะอยู่อีกมากทีเดียว เอาเป็นว่าคุณสามารถสร้าง model ขึ่นมาเองหรือทำได้โดยการใช้คำสั่ง scaffold ของ Rails

ไม่มีความคิดเห็น:

แสดงความคิดเห็น