โครงการ ruby-type-inference เป็นวิธีการใหม่อย่างสมบูรณ์ในการแก้ไขปัญหาของธรรมชาติของ Ruby Dynamic และให้ความละเอียดของสัญลักษณ์และการอนุมานประเภทที่เชื่อถือได้มากขึ้น มันรวบรวมข้อมูลเวลาทำงานบางอย่างเพื่อสร้างสัญญาประเภทสำหรับวิธีการ
ทุกครั้งที่มีการเรียกใช้วิธีการมีข้อโต้แย้งบางประเภทที่ถูกส่งผ่านไป Type Tracker รวบรวมชุดค่าอาร์กิวเมนต์ทั้งหมดดังกล่าวจากนั้นสร้างสัญญาพิเศษซึ่งเป็นไปตาม Tuples ประเภทอาร์กิวเมนต์ที่พบทั้งหมด
วิธีการนี้มีข้อดีและข้อเสียของตัวเอง:
การดำเนินการนี้กล่าวถึงปัญหาการครอบคลุมที่ระบุไว้โดยให้ความเป็นไปได้ที่จะรวมสัญญาประเภทใด ๆ ได้ตลอดเวลา
สำหรับการใช้งานอย่างง่ายคุณต้องติดตั้งปลั๊กอินข้อมูลเชิงลึกของ Ruby Dynamic Code สำหรับ Rubymine จากนั้นปลั๊กอินนี้จะต้องติดตั้งอัญมณี arg_scanner ดูคำแนะนำการติดตั้ง Arg_scanner หากคุณมีปัญหาขณะติดตั้ง
หลังจากนั้นคุณจะมีความเป็นไปได้ที่จะเรียกใช้โปรแกรมของคุณภายใต้ประเภทตัวติดตาม:

หรือคุณสามารถเรียกใช้โปรแกรมของคุณในเทอร์มินัลผ่านไบนารี rubymine-type-tracker (แต่คุณต้องเปิดโครงการของคุณใน Rubymine) เช่น:
rubymine-type-tracker bin/rails server
ไบนารี rubymine-type-tracker ถูกรวมอยู่ในอัญมณี arg_scanner
ดูคุณสมบัติ MD เพื่อทำความเข้าใจว่าคุณจะได้รับประโยชน์อะไรหลังจากเรียกใช้โปรแกรมของคุณภายใต้ประเภทตัวติดตาม
Arg_Scanner เป็นอัญมณีที่มีส่วนขยายดั้งเดิมเพื่อแนบกับกระบวนการทับทิมและติดตามและสกัดกั้นการเรียกวิธีการทั้งหมดเพื่อบันทึกการไหลของข้อมูลประเภทที่ชาญฉลาดในรันไทม์
ดูเอกสาร arg_scanner สำหรับรายละเอียดเกี่ยวกับการใช้งาน
เซิร์ฟเวอร์ ตัวประมวลผลสัญญาประเภท รับฟังข้อมูลประเภทขาเข้า (จาก arg_scanner ) และประมวลผลไปยังรูปแบบขนาดกะทัดรัด
ข้อมูลที่เก็บไว้อาจใช้ในภายหลังเพื่อการวิเคราะห์รหัสที่ดีขึ้นและยังสามารถแชร์กับผู้ใช้รายอื่นได้
ไคลเอนต์การวิเคราะห์รหัส (ปลั๊กอิน Rubymine/IJ+Ruby) ใช้ข้อมูลสัญญาเพื่อให้คุณสมบัติสำหรับผู้ใช้เช่นการเสร็จสิ้นรหัสการแก้ไขที่ดีขึ้น ฯลฯ
( TODO ) Signature Server ได้รับสัญญาโดยไม่ระบุชื่อจากผู้ใช้และจัดเตรียมคอลเลกชันสัญญาที่รวบรวมไว้สำหรับอัญมณียอดนิยม
อัญมณี arg_scanner ใช้สำหรับการรวบรวมข้อมูลประเภท สามารถติดตั้งด้วยตนเองไปยังเป้าหมาย SDK และต้องการ MRI Ruby อย่างน้อย 2.3
มีความเป็นไปได้สองประการที่จะใช้ตัวติดตามประเภท: (i) โดยใช้ปลั๊กอิน IJ/Rubymine หรือ (ii) ที่ต้องการจากรหัสทับทิม
วิธีที่ง่ายที่สุดในการเรียกใช้ปลั๊กอิน (และสะดวกที่สุดสำหรับการพัฒนา) คือการทำงานด้วยงานพิเศษกับ iJ Ultimate Snapshot:
./gradlew ide-plugin:runIde
งานจะรวบรวมปลั๊กอินเรียกใช้ ij Ultimate ด้วยปลั๊กอิน "ติดตั้ง" ในนั้น ไม่จำเป็นต้องดำเนินการอะไรด้วยตนเองในกรณีนั้น
หากคุณต้องการลองใช้กับอินสแตนซ์ Rubymine ที่มีอยู่คุณควร:
./gradlew ide-plugin:buildPluginFile | Settings | Plugins | Install plugin from disk...ide-plugin/build/distributions และเลือกโปรดทราบว่าเนื่องจาก API เปลี่ยนปลั๊กอินอาจไม่เข้ากันกับอินสแตนซ์ RM รุ่นเก่า
ในการรวบรวมข้อมูลสำหรับสคริปต์จำเป็นต้องมีเซิร์ฟเวอร์สัญญาที่จะเปิดใช้งาน มันสามารถทำงานได้โดยการวิ่ง
./gradlew contract-creator:runServer --args path-to-db.mv.db โดยที่ path-to-db.mv.db เป็นเส้นทางที่จะจัดเก็บประเภทสัญญา (ไฟล์ฐานข้อมูล H2)
เรียกใช้สคริปต์ทับทิมที่จะประมวลผลผ่าน Binary arg-scanner
ใช้ข้อมูลที่รวบรวมโดยเซิร์ฟเวอร์สัญญา
ความคิดการใช้กรณีการมีส่วนร่วมและคำถามใด ๆ ยินดีต้อนรับเนื่องจากโครงการกำลังบ่มเพาะ โปรดอย่าลังเลที่จะสร้างปัญหาสำหรับคำขอที่สมเหตุสมผล