เมื่อคุณสร้างแอป Rails คุณจะต้องใช้อัญมณีจำนวนมาก บางอย่างดูมีมนต์ขลังโดยสิ้นเชิง! แต่เวทมนตร์นั้นเกิดขึ้นได้อย่างไร?
ในอัญมณีส่วนใหญ่ ไม่มีอะไรที่พวกเขาทำที่คุณทำไม่ได้ เป็นเพียงรหัสทับทิม บางครั้งก็ซับซ้อน รหัสทับทิม แต่ถ้าคุณสำรวจโค้ดนั้น คุณจะเริ่มเข้าใจว่าเวทมนตร์นั้นมาจากไหน
การค้นหาซอร์สโค้ด
เพื่อให้เข้าใจว่าอัญมณีทำงานอย่างไร คุณต้องหารหัสของมัน
หากมีวิธีการที่คุณต้องการทราบเพิ่มเติม คุณก็มีวิธีง่ายๆ ในการค้นหาแหล่งที่มา:method
และ source_location
. ฉันเขียนเกี่ยวกับสิ่งเหล่านี้ก่อนหน้านี้เล็กน้อย . นี่คือตัวอย่าง:
irb(main):001:0> ActiveRecord::Base.method(:find).source_location
=> ["/usr/local/lib/ruby/gems/2.1.0/gems/
activerecord-4.2.0.beta4/lib/active_record/core.rb", 127]
แต่ถ้าคุณสนใจมากกว่าหนึ่งวิธีล่ะ
หากคุณมีคอนโซลเปิดอยู่ในไดเรกทอรีของแอป Rails คุณสามารถไปที่รหัสของ gem ได้:
~/Source/gem_example[master] jweiss$ bundle open rack
หากอยู่ใน Gemfile
. ของคุณ , bundle open rack
จะเปิดทั้ง rack
อัญมณีในตัวแก้ไขของคุณ คุณสามารถเรียกดูไฟล์ทั้งหมดภายในไฟล์ได้อย่างสะดวกสบาย
คุณเริ่มที่ไหน
เมื่อคุณรู้แล้วว่ารหัสของอัญมณีอยู่ที่ไหน คุณจะเริ่มเข้าใจได้อย่างไร
หากคุณพยายามเรียนรู้วิธี activerecord
ทำงานโดยการอ่าน lib/active_record.rb
คุณจะไม่ไปไหน คุณจะพบ autoload
. มากมาย s และ require
ส.
ง่ายที่สุดที่จะเข้าใจอัญมณี หลัง แอปของคุณใช้งานได้เล็กน้อย เมื่อคุณทราบข้อมูลเพิ่มเติมเกี่ยวกับประเภทของงานที่อัญมณีทำเพื่อคุณแล้ว ด้วยวิธีนี้ คุณจะมีไอเดียเกี่ยวกับคลาสและวิธีการที่น่าสนใจที่คุณควรเริ่มต้น
หลังจากที่คุณได้ชื่อวิธีการที่น่าสนใจแล้ว คุณสามารถใช้ source_location
, ค้นหาในโครงการ ในเอดิเตอร์ของคุณ หรือ ag บนบรรทัดคำสั่งเพื่อดูว่าเมธอดเหล่านั้นถูกกำหนดไว้ที่ใด แล้วความสนุกก็เริ่มขึ้น
รหัสอัญมณีอยู่บนเครื่องของคุณใช่ไหม นั่นหมายความว่าคุณสามารถเปลี่ยนได้ตามที่คุณต้องการ! คุณสามารถทำลายมันได้ และไม่มีใครต้องรู้
เมื่อฉันพยายามเข้าใจว่าอัญมณีทำงานอย่างไร ฉันไม่เพียงแค่อ่านโค้ดเท่านั้น ฉันเพิ่ม puts
กล่าวถึงอัญมณี ฉันโยนข้อยกเว้นเพื่อหาวิธีที่แอปของฉันไปถึงบรรทัดบางบรรทัด และฉันยุ่งกับโค้ดเพื่อทำความเข้าใจว่าทำไมผู้เขียนถึงเขียนแบบนั้น
เมื่อคุณรู้วิธีการทำเคล็ดลับแล้ว มันก็มีมนต์ขลังน้อยลงมาก และคุณจะไม่ต้อง เดา โค้ดนั้นจะทำงานอย่างไรในสถานการณ์แปลกๆ เพราะคุณจะได้สัมผัสด้วยตัวเอง
ทำความสะอาดหลังตัวเอง
หลังจากที่คุณยุ่งกับโค้ดอัญมณี แอปของคุณอาจอยู่ในสภาพที่ไม่ดีนัก มันอาจจะไม่ได้ทำงานอีกต่อไป! และถึงแม้ว่ามันจะเกิดขึ้น มันจะสแปม puts
. เหล่านั้นทั้งหมด คำสั่งที่คุณเพิ่มลงในคอนโซลของคุณ
แต่ RubyGems มีวิธีที่รวดเร็วในการทำให้สิ่งต่างๆ กลับมาเป็นปกติ:
~ jweiss$ gem pristine activerecord -v 4.2.0
Restoring gems to pristine condition...
Restored activerecord-4.2.0
หรือถ้าจำไม่ได้ว่าไปยุ่งกับเพชรเม็ดไหน และอดทนจริงๆ:
~ jweiss$ gem pristine --all
หลังจากนั้น อัญมณีทั้งหมดของคุณจะกลับมาเป็นเหมือนเดิมเมื่อคุณติดตั้ง
คุณจะสำรวจอะไร
เมื่อคุณพบ อ่าน และสำรวจโค้ดภายในอัญมณีของคุณ คุณจะเข้าใจโค้ดที่คุณพึ่งพาในระดับที่ลึกซึ้งยิ่งขึ้น และไม่ต้องอาศัยการคาดเดาและการคาดเดาอีกต่อไป
เดิมโพสต์นี้ถูกส่งไปที่รายการของฉันโดยเฉพาะ หากต้องการรับโพสต์ที่คล้ายกันในกล่องจดหมายทุกวันศุกร์ ลงชื่อสมัครใช้ที่นี่!