-
ภาพรวมของบทความ
- แนะนำทริกหลากหลายสำหรับทำระบบอัตโนมัติของเครื่องมือ CLI โดยผสาน Ruby เข้ากับสคริปต์ Bash
- แม้จะใช้ภาษา scripting อื่นได้เช่นกัน แต่บทความนี้เน้นย้ำเรื่องความอ่านง่ายและความยืดหยุ่นของ Ruby
-
ทำไมต้อง Ruby แทน Bash?
- Ruby มีชนิดข้อมูลที่ชัดเจน เช่น จำนวนเต็ม จำนวนทศนิยม สตริง อาร์เรย์ แฮช เป็นต้น ช่วยให้อ่านโค้ดได้ง่ายขึ้น
- สำหรับผู้ใช้ macOS หากติดตั้ง Homebrew อยู่แล้ว ก็สามารถใช้งาน Ruby ที่มาพร้อมกันได้อย่างสะดวก
- Ruby ถูกนำไปใช้ได้อย่างมีประโยชน์ในสคริปต์สำหรับ build/automation เช่น CocoaPod, Fastlane เป็นต้น
- สามารถจัดการฟอร์แมตข้อมูลหลากหลายอย่าง JSON, CSV, YAML ได้ง่ายด้วยไลบรารีมาตรฐานที่มีมาในตัว
-
การเขียนสคริปต์ Ruby แบบ One-Liner
- สคริปต์บรรทัดเดียวสามารถรันได้ในรูปแบบ
ruby -e "<expression>" - สามารถใช้ pipe และ redirection เพื่อรับผลลัพธ์จากเครื่องมือ CLI อื่นมาประมวลผลต่อได้
- รองรับการขยายความสามารถโดย preload ไลบรารีที่ต้องใช้ล่วงหน้าด้วยออปชัน
-r
- สคริปต์บรรทัดเดียวสามารถรันได้ในรูปแบบ
-
ลองนำไปใช้ร่วมกับเครื่องมือ CLI อื่น
- เมื่อนำ Ruby ไปใช้ร่วมกับ AWS CLI, Git, GitHub CLI, jq, curl ฯลฯ ก็จะดึงจุดแข็งของแต่ละเครื่องมือที่ทำงานเฉพาะด้านออกมาได้อย่างเต็มที่
- ตัวอย่างการจัดการข้อมูล JSON:
- เรียก API ด้วย
curlแล้วใช้ไลบรารี JSON ของ Ruby parse ข้อมูลและแสดงฟิลด์ที่ต้องการ เช่น title
- เรียก API ด้วย
- ตัวอย่างการจัดการข้อมูล YAML:
- อ่านไฟล์ด้วย
cat config.yamlแล้ว parse ด้วยไลบรารี YAML ของ Ruby เพื่อดึงค่าการตั้งค่าที่ต้องการ
- อ่านไฟล์ด้วย
- สามารถนำผลลัพธ์จากเครื่องมือ CLI มาผ่านการประมวลผลเพิ่มเติมด้วย Ruby เพื่อสร้าง workflow อัตโนมัติที่ยืดหยุ่นยิ่งขึ้น
-
การจัดการข้อมูลที่ไม่มีโครงสร้างตายตัว (ตัวอย่าง Git Log)
- ไม่ใช่ข้อมูลทุกอย่างจะมีโครงสร้างแบบ JSON/CSV/YAML
- ด้วยความสามารถด้าน regular expression และการประมวลผลข้อความของ Ruby จึงสามารถอ่านข้อความทีละบรรทัดจาก log หรือ system message แล้วดึงข้อมูลที่ต้องการออกมาได้
- ตัวอย่างสคริปต์ Git Log:
- ใช้
git log --oneline #{file}เพื่อดึง commit log แบบบรรทัดเดียว - ใช้
gum choose --limit 100เพื่อเลือก log ที่ต้องการแบบ interactive - ดึง commit hash จากแต่ละ log ที่เลือก แล้วใช้
git showเพื่อแสดงรายละเอียดการเปลี่ยนแปลง - สุดท้ายจัดรูปแบบ log ที่เลือกใหม่เป็น checklist แล้วแสดงผล
- ใช้
-
ส่งท้าย
- เมื่อผสานเครื่องมือ CLI เข้ากับสคริปต์ Ruby ก็สามารถสร้างเครื่องมืออัตโนมัติทรงพลังได้ด้วยการประกอบคำสั่งง่าย ๆ
- สามารถทำระบบอัตโนมัติสำหรับงานประมวลผลข้อมูลที่ซับซ้อน การวิเคราะห์ log และงานจัดการเวอร์ชันได้อย่างมีประสิทธิภาพ เพื่อเพิ่ม productivity ให้สูงสุด
- การเริ่มต้นเล็ก ๆ อาจนำไปสู่การเปลี่ยนแปลงครั้งใหญ่ และบทความก็ชวนให้คุณลองเริ่ม side project ของตัวเองดู
- นอกจากนี้ Perl ก็ยังมีประโยชน์เช่นกัน และแหล่งข้อมูลอย่าง Perl One-Liners Guide ก็อาจช่วยได้
ยังไม่มีความคิดเห็น