Proyek ruby-type-inference adalah pendekatan yang sama sekali baru untuk mengatasi masalah sifat dinamis Ruby dan memberikan resolusi simbol yang lebih andal dan tipe inferensi. Ini mengumpulkan beberapa data waktu berjalan untuk membangun kontrak jenis untuk metode tersebut.
Setiap kali metode dipanggil, beberapa argumen jenis tertentu diteruskan ke sana. Type Tracker mengumpulkan semua kombinasi argumen semacam itu dan kemudian membangun kontrak khusus yang memenuhi semua tipe argumen yang ditemui tupel.
Pendekatan ini memiliki pro dan kontra sendiri:
Implementasi ini membahas masalah pertanggungan yang dinyatakan dengan menyediakan kemungkinan untuk menggabungkan kontrak jenis apa pun kapan saja.
Untuk penggunaan sederhana Anda perlu menginstal plugin Ruby Dynamic Code Insight untuk rubymine. Maka plugin ini akan membutuhkan permata Arg_scanner untuk diinstal. Lihat instruksi instalasi arg_scanner jika Anda memiliki masalah saat instalasi.
Setelah itu, Anda akan memiliki kemungkinan untuk menjalankan program di bawah Type Tracker:

Atau Anda dapat menjalankan program Anda di terminal melalui biner rubymine-type-tracker (tetapi Anda harus menjaga proyek Anda dibuka di rubymine). Misalnya:
rubymine-type-tracker bin/rails server
Biner rubymine-type-tracker dimasukkan ke dalam permata arg_scanner.
Lihat fitur.md untuk memahami manfaat apa yang akan Anda miliki setelah menjalankan program Anda di bawah Type Tracker.
Arg_scanner adalah permata dengan ekstensi asli untuk melampirkan proses ruby dan melacak dan mencegat semua panggilan metode untuk mencatat aliran data tipe-bijaksana dalam runtime.
Lihat Dokumentasi arg_scanner untuk detail tentang penggunaan.
Server Prosesor Kontrak Jenis Mendengarkan data tipe yang masuk (dari arg_scanner ) dan memprosesnya ke format yang ringkas.
Data yang disimpan dapat digunakan nanti untuk analisis kode yang lebih baik dan juga dapat dibagikan dengan pengguna lain.
Klien Analisis Kode (plugin Rubymine/IJ+Ruby) menggunakan data kontrak untuk menyediakan fitur bagi pengguna seperti penyelesaian kode, resolusi yang lebih baik, dll.
( TODO ) Server Signature menerima kontrak secara anonim dari pengguna dan menyediakan koleksi kontrak yang dikompilasi untuk permata populer.
Permata arg_scanner digunakan untuk mengumpulkan informasi jenis. Ini dapat dipasang secara manual ke target SDK dan membutuhkan MRI Ruby setidaknya 2.3.
Ada dua kemungkinan untuk menggunakan pelacak tipe: (i) menggunakan plugin IJ/rubymine atau (ii) yang mengharuskannya dari kode Ruby.
Cara termudah untuk menjalankan plugin (dan yang paling nyaman untuk pengembangannya) adalah menjalankannya dengan tugas lulusan khusus melawan IJ Ultimate Snapshot:
./gradlew ide-plugin:runIde
Tugas akan mengkompilasi plugin, menjalankan IJ Ultimate dengan plugin "diinstal" di dalamnya. Tidak perlu menjalankan apa pun secara manual dalam kasus itu.
Jika Anda ingin mencobanya dengan instance rubymine yang ada, Anda harus:
./gradlew ide-plugin:buildPluginFile | Settings | Plugins | Install plugin from disk...ide-plugin/build/distributions dan pilih.Perhatikan bahwa karena perubahan API, plugin mungkin tidak sesuai dengan instance RM yang lebih lama.
Untuk mengumpulkan data untuk skrip membutuhkan server kontrak untuk berjalan dan berjalan; itu bisa dijalankan dengan berlari
./gradlew contract-creator:runServer --args path-to-db.mv.db di mana path-to-db.mv.db adalah jalur di mana kontrak jenis akan disimpan (file database H2).
Jalankan skrip Ruby yang akan diproses melalui Biner arg-scanner .
Gunakan data yang dikumpulkan oleh server kontrak.
Segala jenis ide, kasus penggunaan, kontribusi, dan pertanyaan sangat disambut karena proyek baru saja diinkubasi. Silakan membuat masalah untuk permintaan yang masuk akal.