หน้าเว็บ

วันพฤหัสบดีที่ 21 สิงหาคม พ.ศ. 2557

เก็บตกเทคนิคการใช้ irb

ก็บตกเทคนิคการใช้ irb ที่น่าจะเป็นประโยชน์ครับ

เปลี่ยน irb prompt ให้สั้นลง
irb prompt แบบเดิมหน้าตาแบบนี้
C:\>irb
irb(main):001:0>

ถ้าต้องการย่อ prompt ให้สั้นลง อ่านสบายขึ้น ให้ใส่อ็อบชั่น --simple-prompt เวลาเรียก irb ดังนี้
C:\>irb --simple-prompt
>>

อ้างอิงค่า return จากบรรทัดก่อนหน้า
เราสามารถอ้างอิงค่าสุดท้ายที่ return จากการรันโค้ดก่อนหน้าได้จาก "_" ดังตัวอย่างต่อไปนี้

>> "Manchester United F.C".gsub(/United/, "City")
=> "Manchester City F.C"
>> better_team = _
=> "Manchester City F.C"
>>

>> a = [1,2,3]
=> [1, 2, 3]
>> b = [4,5,6]
=> [4, 5, 6]
>> a + b
=> [1, 2, 3, 4, 5, 6]
>> c = _
=> [1, 2, 3, 4, 5, 6]
>>

จะเห็นว่าเราไม่ต้องพิมพ์โค้ดเดิมซ้ำอีก ถ้าต้องการนำค่าที่ได้จากการรันครั้งที่แล้วมาใช้ต่อ ระหว่างที่เราทดลอง ถือเป็น trick ที่ช่วยได้เยอะทีเดียว

สลับหน้า irb
เราสามารถสลับหน้า irb จากหน้าที่ทำงานปกติไปใช้หน้าอื่นได้ด้วย ซึ่งหน้าใหม่ที่เราเปิดขึ้นมาใช้งานจะทำงานแยกกันจากหน้าเดิม ตัวแปรต่างๆ ที่ใช้ในแต่ละหน้าถือว่าเป็นคนบะตัวกัน

วิธีการเปิดหน้าใหม่ก็แค่พิมพ์ irb ซ้ำลงในหน้าปัจจุบัน ดังนี้

>> a = "present"
=> "present"
>> irb
>> a
NameError: undefined local variable or method `a' for main:Object
        from (irb#1):1
>> a = "something new"
=> "something new"
>>

เราสามารถเช็คได้ว่าเราทำงานอยู่ที่หน้าไหนได้จากคำสั่ง jobs

>> jobs
=> #0->irb on main (#: stop)
#1->irb#1 on main (#: running)
>>

จะเห็นว่ามีหน้าของ irb ทั้งหมด 2 หน้าได้แก่ #1 คือหน้าที่เราทำงานอยู่ปัจจุบัน (a = "something new") และ #0 คือหน้าก่อนนั้น (a= "present")

ถ้าต้องการเปลี่ยนกลับไปทำงานในหน้า #0 เราจะใช้คำสั่ง fg 0
และถ้าต้องการปิดการทำงานของหน้าใดก็ให้ใช้คำสั่ง kill แล้วตามด้วยเลขหน้า

>> fg 0
=> #, @signal_status=:IN_EVAL, @scanner=#>
>> a
=> "present"
>> kill 1
=> [1]
>> jobs
=> #0->irb on main (#: running)
>>

ทำยังไงเวลาพิมพ์ผิด
หลายครั้งที่พิมพ์โค้ดผิด หรือเผลอไปกด enter โดยเฉพาะตอนกำลังเขียนสตริงอยู่
irb จะสับสน และจะงงไม่รู้ว่าคำสั่งที่เราเขียนอยู่เวลานั้นมันจบบรรทัดตรงไหน ทำให้เราไม่สามารถออกจากคำสั่งนั้นเพื่อมาเขียนคำสั่งใหม่ได้ซักที

เวลาเจอปัญหานี้ ผมมักใช้วิธีแก้อยู่ 2 วิธี
1. ลองใส่เครื่องหมาย ' หรือ " ต่อท้ายแล้วกด enter เพื่อให้ irb มองคำสั่งนั้นเป็นสตริงแล้วฟ้อง error ซะ
2. กด Ctrl + C เพื่อบังคับให้ irb ฟ้อง error แล้วขึ้นบรรทัดใหม่ให้เลย

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

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