เริ่มต้นกับ Ruby และ Rails ยังไงดี

Blog นี้ผมเข้าเนื้อหาเลยนะครับ ใครอยากอ่านที่ ผมเกริ่น ตามไปอ่านกันได้

Blog นี้เหมาะสำหรับคนที่พร้อมหรือพยายามศึกษาด้วยเอกสารภาษาอังกฤษนะครับ มันเป็นวิธีที่ผมใช้ ใครไม่ค่อยถนัด ลองพยายามหน่อยนะครับ ภาษาอังกฤษมันจะเป็นสำหรับสาขาเราจริงๆ

เริ่มต้นที่ตัวติดตั้ง Ruby ครับ ผมแนะนำ RVM ถ้าใช้ตัวนี้คุณจะติดตั้ง Ruby ได้ง่ายๆ จะเปลี่ยน Ruby version ได้ง่ายๆ เปลี่ยนไปใช้ Ruby บน VM อื่นๆ เช่น JRuby ก็ง่ายเช่นกัน แถมสามารถสร้าง gemset ต่างๆ กันต่อโปรเจ็คได้ด้วย

จากนั้นก็ไปทำความรู้จักกับ basic Ruby จากสถานที่ต่างๆ ตามอัตถยาศัยครับ อันนี้ไม่มี recommend แต่อย่าลืมทำความรู้จักกับ irb เพื่อนยากไว้ด้วย

สิ่งที่ต้องรู้จักต่อมาคือ gem มันคือ library package manager ที่กลายเป็นมาตรฐานของ Ruby ไปแล้ว หนึ่งในความสนุกของ Ruby อยู่ตรงนี้หละครับ เพราะ ณ วันนี้มี gem ให้เล่นเยอะเหลือเกิน ถ้าติดตามข่าวดีๆ ทำความรู้จักกับเหล่า gem ไว้ จะทำให้เราประหยัดเวลาในการทำอะไร ด้วยการไปใช้ของที่คนอื่นทำไว้ให้แล้ว ไปได้เยอะมาก เช่น ทำหน้า CRUD สำหรับ Admin ได้อย่างรวดเร็วด้วย Active Admin หรือระบบ user management พื้นฐานด้วย Devise และอื่นๆอีกมากมาย

มาถึง​ Rails กันครับ มันก็อยู่ในรูป gemๆ หนึ่งเท่านั้นแหละ ก็ install มันเข้าไป เอกสารพื้นฐานของตัว Rails ผมก็ไม่มีอันไหนแนะนำเป็นพิเศษเหมือนกัน

โดยพื้นฐานก็ 2 ลิงค์นี้ น่าจะพอครับ http://ruby.railstutorial.org/ กับ http://guides.rubyonrails.org/index.html

แต่ผมมี screencast แนะนำอยู่อันนึง The Intro to Rails Screencast I Wish I Had

พอเล่นกับ Rails ซักพัก ก็คงอยาก deploy ขึ้นบน server จริง อันนี้แนะนำ Heroku ครับ สำหรับผู้เริ่มต้น ฟรี ครับ แต่จะจำกันให้แค่ 1 dyno ต่อประมาณหนึ่งเดือน หมายความว่าเราจะรับได้แค่ไม่กี่ concurrent user และห้ามมี background job ครับ

อีกยี่ห้อนึงที่ดังๆ คือ Engine Yard แต่ผมไม่เคยใช้เหมือนกันคิดว่าคงไม่ต่างกันมากมั้ง

ถ้าเราเลือกใช้ Heroku สิ่งที่ต้องเตรียมตัวคือ มันบังคับให้เราใช้ PostgreSQL เป็น database ครับ เพราะฉะนั้นตอนเริ่มเล่น Rails ใครไม่อยากเสียเวลาก็เริ่มที่ Postges ซะเลย

หรือใครจะอยากไม่อยากใช้ SQL ก็ไม่ว่ากันครับ แต่ไม่แน่ใจเหมือนกันว่า Heroku มี add-ons ของพวก NoSQL ให้เล่นฟรีๆ แค่ไหน แต่ถ้าไม่ใช้ NoSQL ก็จะไม่ได้เล่นกับ ActiveRecord ที่ถือเป็นของขึ้นชื่อของ Rails พอควร

พอเล่นไปได้ซักพัก ใครที่สนใจเรื่อง test เหมือนผม แนะนำ เล่มนี้ครับ The RSpec Book 

RSpec คือ ชื่อ test framework ยี่ห้อนึง ประมาณ xUnit แหละครับ แต่ส่วนตัวผมชอบมาก เล่มนี้ไม่ได้สอน RSpec อย่างเดียว แต่สอนถึง TDD และวิธีการพัฒนาแบบ Outside-in ด้วย และพอเป็น outside-in แน่นอนต้องพูดถึง Cucumber ด้วย

ปัญหาอย่างนึงที่ผมเจอตอนไต่ learning curve ของ Rails มาคือ document มันไม่ค่อยน่าพอใจเท่าไหร่ มันก็มีเยอะพอสมควรแต่รู้สึกไม่พอใจยังไงไม่รู้

ผมพอจะสันนิษฐานได้ว่า เกิดจากความที่มันเป็น open source แล้วมันเปลี่ยนแปลงบ่อยมาก ทำให้มีอะไรใหม่ๆ เรื่อยๆ ข้อมูลหลายๆ อย่างก็ตกยุคอย่างรวดเร็ว รวมไปถึงพวก blog post และ mailing list ต่างๆ ด้วย

ไม่นานมานี้ ผมมักจะมีปัญหาว่า จะทำสิ่งๆหนึ่ง ทำยังไงดี หรือจะทำสิ่งๆหนึ่ง รู้สึกว่าเปลืองเวลา และน่าจะมีคนทำแล้ว พอไปค้น gem ดูเจอหลายตัว เอ๊ะ เค้านิยมใช้ตัวไหนกันว่ะ

วิธีแก้ปัญหาที่ผมเลือกใช้แก้ปัญหานี้ คือ เปิดรับข่าวสารครับ ผมคิดว่าสิ่งที่ต่างสำหรับคนที่เข้าไปใน platform ใหม่ๆ กับคนที่อยู่มานานแล้ว อย่างนึงคือ คือ ความรู้ในสิ่งที่เคยเป็นที่พูดถึงกันในอดีต พอรู้แบบนี้ผมเลยช่างมันกับเรื่องเก่าๆ ครับ แต่ข่าวใหม่ๆ ผมต้องไม่พลาด

ผมติดตามๆ สิ่งต่างๆ เหล่านี้ http://railscasts.com/, http://rubyshow.com/, http://ruby5.envylabs.com/, http://www.rubyinside.com/, http://www.planetrubyonrails.com/ ที่มีการอัพเดตอยู่ทุกวัน, ทุกอาทิตย์ๆ ผม follow twitter account ของคนเขียนหนังสือ และคนเขียน library ต่างๆ และผลที่ผ่านมารู้สึกเป็นไปได้ด้วยดีครับ เริ่มรู้อะไรขึ้นเรื่อยๆ

สำหรับเบื้องต้น ก็คงประมาณนี้หละครับ ใครมีปัญหาอะไรก็ถามมาได้ ทางไหนก็ได้ตามสะดวกครับ

ขอให้มีความสุขครับ 🙂

Advertisements

4 thoughts on “เริ่มต้นกับ Ruby และ Rails ยังไงดี

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s