İçeriğe atla
cd /languages
  • Kurallar öncelikli
  • Programlama
  • AST ve sembol desteği

Maguyva'da Ruby: Rails ve Ruby uygulamaları için kod grafları

Maguyva, Ruby'yi AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları Rails ve Ruby kod tabanlarında sınıfları, modülleri, singleton yöntemleri ve yapıcıları izleyebilir.

Ruby repoları yüzeysel yapay zeka araçlarını neden zorlar

Ruby büyük ölçüde kurallara ve meta programlamaya dayanır. Yöntemler attr_accessor ile üretilir, sınıflar başka dosyalarda yeniden açılır ve ad alanları modülleri birçok düzeyde iç içe yerleştirir. Okunabilir yüzey, bir çağrının gerçekte hangi yönteme vardığını gizler; kaba bir metin araması ise uygulamadaki her call ve her perform çağrısını döndürür.

Maguyva ajana sınıfları, modülleri, yöntemleri ve onları çağıranları yapı olarak verir; böylece ajan tahmin yürütmek yerine bir değişikliği uygulama boyunca izler.

Maguyva Ruby’den neleri çıkarır

Maguyva .rb, .rbw, .rake ve .gemspec dosyalarını, ayrıca Gemfile ve Rakefile dosyalarını kapsar. Örnek yöntemleri ve singleton yöntemler (def self.call) çıkarılır; singleton yöntemler static olarak işaretlenir. attr_reader, attr_writer ve attr_accessor bildirimleri erişim yöntemi sayılır ve semboller modül ve sınıf ad alanlarıyla nitelenir.

ClassName.new ve Namespace::ClassName.new örnekleme sayılır; alıcı türlemesi yerel atamaları ve @instance_variables değişkenlerini izler, böylece atanmış bir nesne üzerindeki çağrı kendi sınıfına çözülebilir. Graf ayrıca kalıtımı, modül dahil etmeyi, geçersiz kılmaları, raise ve rescue kenarlarını ve okuma ve yazmaları kaydeder.

Uygulama kodunun öne çıkması için meta programlama çağrıları (define_method, send, method_missing, class_eval ve benzerleri), Sorbet T:: tür yardımcıları ve yaygın Enumerable çağrıları (each, collect, reject ve benzerleri) ilişkilerden filtrelenir.

Örnek ajan istemleri

  • “Billing::ChargeCustomer.call yöntemini kim, hangi job’lardan ve controller’lardan çağırıyor?” (find_symbol, ardından gelen yönde dependency_search)
  • “Hangi modeller ApplicationRecord sınıfından kalıtım alıyor ve Auditable modülünü dahil ediyor?” (dependency_search)
  • “Bir sipariş ödendi olarak işaretlendikten sonra ne olduğunu izle.” (get_task_context)

Bilinen sınırlar

  • Ruby’de require ve load sıradan yöntem çağrılarıdır; bu nedenle structural_search aracındaki imports ön ayarı hiçbir şey seçmez. Bunları listelemek için text_pattern_search kullanın.
  • Çalışma zamanında define_method ile oluşturulan veya method_missing tarafından işlenen yöntemler sembol olarak çıkarılmaz ve bu çağrılar meta programlama gürültüsü olarak filtrelenir.
  • Ruby’de dekoratör sözdizimi yoktur; bu nedenle dekoratör ilişkileri uygulanamaz olarak işaretlenir.

Sonraki adımlar

Hızlı başlangıç ile bir repo bağlayın, ardından destek matrisi için uyumluluk sayfasına bakın. Diğer dinamik dil repoları için Python rehberi ile karşılaştırın.

En uygun kullanım

  • > Modellerin, service object'lerin, job'ların ve concern'lerin birçok dizin genelinde birbirini çağırdığı Rails monolitleri.
  • > Derin modül ad alanlarına ve ortak temel sınıflara sahip Ruby gem'leri ve hizmetleri.
  • > Uygulamanın yarısının bağlı olduğu bir modele veya hizmete dokunmadan önce bir değişikliğin kapsamını bir yapay zeka ajanıyla belirlemek isteyen ekipler.

Ajan iş akışları

  • > Davranışları değişmeden önce bir service object'i veya model yöntemini çağıran herkesi bulmak.
  • > Bir sınıfın `.new` ile nerede oluşturulduğunu ve ardından hangi yöntemlerin çalıştığını izlemek.
  • > Bir yeniden yapılandırmadan önce bir temel sınıftan kalıtım alan veya bir modülü dahil eden sınıfları haritalamak.

Motor ayrıntıları

  • > Ruby desteği `.rb`, `.rbw`, `.rake`, `.gemspec`, `Gemfile` ve `Rakefile` dosyalarını kapsar. Singleton yöntemler static olarak işaretlenir ve `attr_*` bildirimleri erişim yöntemi sayılır.
  • > `ClassName.new` örnekleme sayılır; alıcı türlemesi yerel atamaları ve örnek değişkenlerini izler.
  • > `define_method` ve `send` gibi meta programlama çağrıları, Sorbet `T::` yardımcıları ve yaygın Enumerable çağrıları ilişkilerden filtrelenir.

Yararlı MCP giriş noktaları

  • find_symbol

    `Billing::ChargeCustomer.call` gibi ad alanına sahip bir sınıf, modül veya yöntem için kullanın.

  • dependency_search

    Bir değişiklikten önce çağıranları ve alt sınıfları görmek için bir modelde veya service object'te gelen yönde dolaşım kullanın.

  • text_pattern_search

    Grafın göremediği `require` yolları, rota dizeleri ve dinamik olarak tanımlanan yöntemler için kullanın.