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

Canonical source: https://maguyva.ai/tr/languages/ruby

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

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.

## Destek anlık görüntüsü

- Katman: AST ve sembol desteği
- Programlama
- Uzantılar: .gemfile, .gemspec, .rake, .rakefile, .rb, .rbw
- Sözdizimi farkında arama ve yapısal bağlam için gerçek AST ayrıştırması.
- Adlandırılmış semboller anlamsal aramayı ve çapraz referansı besler. İlişki çıkarımı etkinleştirildiğinde graf gezinmesi kullanılabilir.
- Bu dil, graf farkındalıklı aramaya semboller ve ilişkiler sağlar; desteklenen kenar türleri dilin yerel yapılarına göre değişir.
- Hem AST ayrıştırma hem de sembol çıkarma kullanılabilir.

## 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.

## 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ıç](/tr/docs/quickstart) ile bir repo bağlayın, ardından destek matrisi için [uyumluluk sayfasına](/tr/docs/compatibility) bakın. Diğer dinamik dil repoları için [Python rehberi](/tr/languages/python) ile karşılaştırın.

## 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.
