Lumaktaw papunta sa content
cd /languages
  • Convention muna
  • Programming
  • Support para sa AST at mga simbolo

Ruby sa Maguyva: mga code graph para sa Rails at Ruby app

Sinusuportahan ng Maguyva ang Ruby gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga class, module, singleton method at constructor sa mga Rails at Ruby codebase.

Bakit pinapahirapan ng mga Ruby repository ang mababaw na AI tool

Malaki ang pag-asa ng Ruby sa convention at metaprogramming. Ginagawa ang mga method ng attr_accessor, binubuksan muli ang mga class sa ibang file, at nilalagay ng mga namespace ang mga module sa iba’t ibang level. Itinatago ng madaling basahing surface kung aling method talaga ang naaabot ng isang call, at ibinabalik ng magaspang na text search ang bawat call at bawat perform sa app.

Ibinibigay ng Maguyva sa agent ang mga class, module, method at mga tumatawag sa kanila bilang structure, para masundan nito ang isang pagbabago sa buong app sa halip na manghula.

Ano ang kinukuha ng Maguyva mula sa Ruby

Sakop ng Maguyva ang mga .rb, .rbw, .rake at .gemspec file, pati ang Gemfile at Rakefile. Kinukuha ang mga instance method at singleton method (def self.call), at minamarkahang static ang mga singleton method. Binibilang na accessor method ang mga attr_reader, attr_writer at attr_accessor declaration, at kina-qualify ang mga symbol sa module at class namespace nila.

Itinuturing na instantiation ang ClassName.new at Namespace::ClassName.new, at sinusundan ng receiver typing ang mga local assignment at @instance_variables, kaya nare-resolve sa class nito ang call sa isang na-assign na object. Itinatala rin ng graph ang inheritance, module include, override, mga raise at rescue edge, at read at write.

Nifi-filter mula sa mga relationship ang mga metaprogramming call (define_method, send, method_missing, class_eval at mga katulad nito), ang mga Sorbet T:: type helper, at mga karaniwang Enumerable call (each, collect, reject at mga katulad nito), para lumitaw ang application code.

Mga halimbawang agent prompt

  • “Sino ang tumatawag sa Billing::ChargeCustomer.call, at mula sa aling mga job at controller?” (find_symbol, tapos dependency_search na incoming)
  • “Aling mga model ang nagmamana mula sa ApplicationRecord at nag-i-include ng Auditable?” (dependency_search)
  • “I-trace kung ano ang nangyayari pagkatapos markahang bayad na ang isang order.” (get_task_context)

Mga kilalang limitasyon

  • Sa Ruby, ordinaryong method call lang ang require at load, kaya walang pinipili ang imports preset sa structural_search. Gamitin ang text_pattern_search para ilista ang mga ito.
  • Hindi kinukuha bilang symbol ang mga method na ginawa sa runtime gamit ang define_method o hina-handle ng method_missing, at nifi-filter ang mga call na iyon bilang metaprogramming noise.
  • Walang decorator syntax ang Ruby, kaya minarkahang hindi applicable ang mga decorator relationship.

Mga susunod na hakbang

Mag-connect ng repository gamit ang quickstart, tapos tingnan ang support matrix sa compatibility page. Para sa iba pang dynamic-language na repository, ikumpara sa gabay sa Python.

Pinakabagay

  • > Mga Rails monolith kung saan nagtatawagan ang mga model, service object, job at concern sa maraming directory.
  • > Mga Ruby gem at service na may malalim na module namespace at mga shared base class.
  • > Mga team na gustong i-scope ang isang pagbabago kasama ang AI agent bago hawakan ang isang model o service na inaasahan ng kalahati ng app.

Mga workflow ng agent

  • > Hanapin ang bawat tumatawag sa isang service object o model method bago magbago ang behavior nito.
  • > I-trace kung saan ginagawa ang isang class gamit ang `.new` at kung aling mga method ang tumatakbo pagkatapos.
  • > I-map ang mga class na nagmamana mula sa isang base class o nag-i-include ng isang module bago mag-refactor.

Mga detalye ng engine

  • > Sakop ng Ruby support ang `.rb`, `.rbw`, `.rake`, `.gemspec`, `Gemfile` at `Rakefile`. Minarkahang static ang mga singleton method, at binibilang na accessor method ang mga `attr_*` declaration.
  • > Itinuturing na instantiation ang `ClassName.new`, at sinusundan ng receiver typing ang mga local assignment at instance variable.
  • > Nifi-filter mula sa mga relationship ang mga metaprogramming call tulad ng `define_method` at `send`, ang mga Sorbet `T::` helper, at mga karaniwang Enumerable call.

Mga kapaki-pakinabang na MCP entry point

  • find_symbol

    Gamitin para sa isang namespaced na class, module o method tulad ng `Billing::ChargeCustomer.call`.

  • dependency_search

    Bago magbago, gumamit ng incoming traversal sa isang model o service object para makita ang mga tumatawag at subclass.

  • text_pattern_search

    Gamitin para sa mga `require` path, route string at mga dynamic na naka-define na method na hindi nakikita ng graph.