Bundler & Gem คู่พิฆาต Dependencies

Posted on May 14, 2015 By Anak Umpaivit

Bundler คืออะไร?

          Bundler คือ สิ่งที่ใช้ในการจัดการ Gem ที่ต้องการนำมาใช้กับ Ruby Application ที่เราพัฒนา โดยติดตามความเคลื่อนไหว และติดตั้ง Gem ต่างๆ ตามที่ตั้งค่าไว้ รวมถึงสามารถกำหนด Version ของ Gem ที่ต้องการได้ สามารถดูรายละเอียดเพิ่มเติมได้ที่ http://bundler.io/

Gem คืออะไร?

          Gem ใน Ruby เปรียบเสมือน Plugin เสริมที่ช่วยในการพัฒนา Application แต่ใช้การตั้งชื่อเรียกให้เข้ากับชื่อ Ruby (Ruby: ทับทิม, Gem: อัญมณี) โดย Gem จะเป็นเหมือน Feature ที่ผู้ใช้งานสร้างขึ้น และบีบอัดเป็น Gem เพื่อใช้งาน และสามารถ Share Gem ที่ทำได้บนเว็บไซต์อย่าง https://rubygems.org/ ซึ่งหากมี Gem ที่ต้องการก็สามารถติดตั้งได้เลยเพราะเป็น Open Source และผู้ใช้งานที่ใช้งาน Gem ของคนอื่น ก็สามารถ ปรับปรุงแก้ไข และติดต่อยังผู้สร้างเพื่อให้ update ได้ด้วย จึงเหมือนกับเป็นการช่วยกันพัฒนาให้ดียิ่งขึ้น

ทำไมต้องใช้ Gem & Bundler?

          ในการสร้าง Application ในสมัยก่อนนั้น จำเป็นต้องลง package , plugin หรือ ส่วนเสริมต่างๆจำนวนมาก เนื่องจาก แต่ละ plugin ก็มีความต้องการ package อื่นๆ ต่อเนื่องไปเรื่อยๆ ทำให้เกิดปัญหาที่เรียกว่า Dependency Injection ซึ่งทำให้การทำงานในแต่ละครั้งยุ่งยากและต้องเสียเวลามานั่งลงให้ครบให้ถูกต้อง ซึ่งจากปัญหาที่เกิดขึ้นทำให้มีคนสร้างเครื่องมือการแก้ปัญหา เพื่อใช้งานกับ Ruby on Rails เรียกว่า Gem โดย Bundler จะช่วยในการติดตั้ง Plugin ที้จำเป็นต่างๆทั้งหมดที่ต้องการ รวมถึงหาก plugin นั้นต้องการ plugin อื่นๆ ก็จะทำการติดตั้งให้อัตโนมัติ โดยสามารถตั้งค่า Plugin ที่ต้องการได้จาก Gemfile ภายใน project ซึ่งจะมีให้กำหนด Source ที่จะ download และ plugin ต่างๆที่ต้องการ รวมถึง version ที่ต้องการ  ดังตัวอย่าง
Bundler
Bundler
          ซึ่งเวลาที่มีการเพิ่ม หรือ แก้ไข version ของ plugin ที่ต้องการใช้งาน ก็สามารถติดตั้งได้ผ่าน command ภายใน console ว่า  “bundle install” ระบบก็จะติดตั้งทั้งหมดให้อัตโนมัติ และหากมีการลบ Plugin ไหน ระบบก็จะลบให้อัตโนมัติ  และด้วยความที่วิธีการนี้เป็นวิธีการ Reslove Dependency ได้มีประสิทธิภาพ จึงมีการสร้างขึ้นเพื่อใช้กับภาษาอื่นๆด้วย