Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีปัดเป่าเวทมนตร์ทับทิมและทำความเข้าใจอัญมณีของคุณ

เมื่อคุณสร้างแอป 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

หลังจากนั้น อัญมณีทั้งหมดของคุณจะกลับมาเป็นเหมือนเดิมเมื่อคุณติดตั้ง

คุณจะสำรวจอะไร

เมื่อคุณพบ อ่าน และสำรวจโค้ดภายในอัญมณีของคุณ คุณจะเข้าใจโค้ดที่คุณพึ่งพาในระดับที่ลึกซึ้งยิ่งขึ้น และไม่ต้องอาศัยการคาดเดาและการคาดเดาอีกต่อไป

เดิมโพสต์นี้ถูกส่งไปที่รายการของฉันโดยเฉพาะ หากต้องการรับโพสต์ที่คล้ายกันในกล่องจดหมายทุกวันศุกร์ ลงชื่อสมัครใช้ที่นี่!