กำลังคิดสร้าง Command Line Interface? นี่ไอเดียโปรเจกต์ดี! ในคู่มือนี้จะสอนสร้าง CLI ด้วย Ruby
ก่อนเริ่ม ควรติดตั้ง Ruby บนคอมพิวเตอร์ และใช้ Terminal ที่รันคำสั่ง Unix ได้ หากใช้ Linux หรือ macOS จะมี Terminal รองรับ Unix built-in แล้ว พร้อมเริ่มได้เลย!
Command Line Interfaces คืออะไร?
เมื่อเริ่มเขียนโค้ด จะรู้จัก Terminal หน้าต่าง Terminal ให้โต้ตอบกับ Command Line Interfaces (CLIs) ซึ่งใช้รันและโต้ตอบกับโปรแกรมด้วยคำสั่งข้อความ
ผ่าน Terminal ให้คำสั่งคอมพิวเตอร์ได้โดยไม่ต้องเมาส์หรือ Visual Application ประหยัดเวลาเขียนโค้ด เพราะโฟกัสเขียนคำสั่ง ไม่ต้องเรียน UI ใหม่สำหรับแต่ละ Tool
CLIs ที่เคยโต้ตอบมานั้นคนอื่นพัฒนา ตัวอย่าง Python CLI รัน Python จาก Terminal, Ruby CLI รัน Ruby Apps เหมือนกัน โชคดีที่เราสร้าง CLI เองได้!
เริ่มด้วยการเปิด Terminal แล้วใช้คำสั่ง mkdir สร้างโฟลเดอร์โค้ด ตัวอย่าง:
คำสั่งนี้สร้างโฟลเดอร์ "ruby-cli" บนคอมพิวเตอร์ ใช้ cd เข้าโฟลเดอร์และสร้าง CLI:
ดีแล้ว! ตอนนี้อยู่ในโฟลเดอร์ "ruby-cli" นี่คือ Setup ทั้งหมดที่ต้องทำ ต่อไปเริ่มเขียน CLI จริงๆ
ฟีเจอร์แรก: พิมพ์ "This is an example CLI" ออก Terminal สร้างไฟล์ "home.rb" ใส่โค้ด
สร้างไฟล์ใหม่ด้วยคำสั่ง:
จะเปิด Text editor nano ใส่โค้ดโปรแกรม ใช้ Vim หรือ Emacs ก็ได้
ใน Nano ใส่โค้ดนี้:
#!/usr/bin/env ruby puts "This is an example CLI"
กด Control-X (Mac), Y แล้ว Enter เพื่อ Save สร้างไฟล์ "home.rb" ในโฟลเดอร์ "ruby-cli"
บรรทัดแรกบอกคอมพิวเตอร์ใช้ Ruby Interpreter รันโค้ด บรรทัดที่สองสั่งพิมพ์ "This is an example CLI" ออก Console
รันไฟล์ด้วยคำสั่ง ruby:
โค้ดคืนค่า:
เห็นไหม เราสร้าง CLI เรียบร้อย รัน "home.rb" แล้วพิมพ์ 'This is an example CLI" ออก Console
รับ User Input ด้วย Flags
CLI ตอนนี้ง่ายแค่พิมพ์ข้อความ ถ้าอยากรับ User Input? ใช้ Library optparse Parse Options จาก Command Line ใช้ในโปรแกรมได้
ใช้ optparse 2 เหตุผล: 1) สร้าง Help Menu ให้แต่ละคำสั่ง 2) Built-in ใน Ruby ไม่ต้องติดเพิ่ม
เพิ่มฟีเจอร์รับ Email แล้วคืนค่า Console:
เปิด "home.rb" ใน Text Editor แทนที่โค้ดด้วย:
#!/usr/bin/env ruby
require 'optparse'
options = {}
OptionParser.new do |op|
op.on("-e", "--email", "Your email address") do |value|
options[:name] = value
end
end.parse!
puts 'Your email address is: ' + options[:name]
โค้ดนี้ใช้ optparse Parse ข้อมูลที่ส่งผ่านคำสั่ง กำหนดค่าที่ User ระบุให้ Variable แล้วพิมพ์ออก Console กรณีนี้พิมพ์ "Your email address is: " ตามด้วย Email ที่ User ระบุ
ทดสอบด้วยคำสั่ง:
ruby home.rb -e jack@jones.com
โค้ดคืนค่า:
Your email address is: jack@jones.com
จุดเด่นของ optparse คือ Auto-generate Help Menu ดูได้ด้วยคำสั่ง:
โค้ดคืนค่า:
Usage: ruby [options] -e, --email Your email address
ตอนรันคำสั่ง ใช้ Flag -e หรือ --email ก็ได้

"Career Karma เข้ามาในชีวิตฉันเมื่อฉันต้องการมากที่สุด และช่วยจับคู่กับบูทแคมป์ได้เร็ว สองเดือนหลังจบ ฉันพบงานฝันที่ตรงกับคุณค่าและเป้าหมายในชีวิต!"
Venus, วิศวกรซอฟต์แวร์ที่ Rockbot
ค้นหาบูทแคมป์ของคุณ
รับ User Input ในโปรแกรม
ตัวอย่างก่อนรับ Input ด้วย Flags แต่ Flags อาจไม่สะดวกหากอยากรับข้อมูลหลายอย่าง
จุดเด่นของ CLI ใน Ruby คือ โปรแกรม Ruby ใดๆ ก็กลายเป็น CLI ได้ ไม่ต้องเรียน Convention ใหม่
สมมติอยากสร้าง App รับชื่อ อีเมล และตรวจสอบอายุเกิน 16 ปีหรือไม่
เริ่มด้วยคำสั่งเข้า Nano Text Editor:
ในไฟล์ใหม่ ใส่โค้ด:
puts "What is your name?"
name = gets
puts "What is your age?"
age = gets
if age.to_i >= 16
puts "#{name}! You are 16 or older!"
else
puts "#{name}! You are not over the age of 16!"
end
หลัง Save รัน CLI ใหม่ด้วยคำสั่ง:
โค้ดคืนค่า:
What is your name? James What is your age? 17 James! You are 16 or older!
ถ้าใส่ "14" ตอบ "What is your age?" จะได้:
James! You are not over the age of 16.
คุณเขียนโค้ด Ruby อะไรก็ได้ใน CLI ขีดจำกัดคือจินตนาการของคุณ
สรุป
CLI ให้โต้ตอบกับโปรแกรมผ่าน Terminal เป็นทางเลือกแทน UI ของโปรแกรม (เหมือน Text Editor เช่น Atom หรือ Notepad)
ในคู่มือนี้แสดงวิธีสร้าง CLI ง่ายๆ ด้วย Ruby ตอนนี้คุณพร้อมสร้าง CLI ของตัวเองอย่างมืออาชีพ Ruby แล้ว!