¿Conoces un generador alternativo de ctags para Ruby?
vim (5)
Agrega lo siguiente a tus ~ / .ctags
--regex-ruby=/(^|;)[ /t]*(class|module)[ /t]+([A-Z][[:alnum:]_]+(::[A-Z][[:alnum:]_]+)+)//3/c,class,constant/
Así que puedes:
- tratar con:
module A::B
Vea más aquí: https://github.com/bltavares/dot-files/blob/master/ctags
Extumante Ctags no funciona bien con Ruby, puedes ver que hay muchos hacks en el código ruby.c y, básicamente, no reconoce muchos casos. Uno de los más importantes es este bit:
class SomeModule::SomeClass
end
Ctags genera:
SomeModule someclass.rb /^class SomeModule::SomeClass$/;" c
Cuál está mal. La entrada correcta y esperada es:
SomeClass someclass.rb /^class SomeModule::SomeClass$/;" c
Esto es muy limitante. Hay algunos parches disponibles para ctags que no funcionan, por ejemplo, https://github.com/xtao/overlay/blob/master/dev-util/ctags/files/ctags-5.5.4-ruby-classes.patch pero mirando en el código base de ctags ruby, esto realmente necesita una reescritura completa.
Así que he estado jugando con otra opción que es https://github.com/rdoc/rdoc-tags que funciona mejor, pero es lenta. Quiero decir realmente lento. La generación de etiquetas en mi proyecto es de 2 segundos con ctags pero una hora con esta herramienta. De Verdad.
Encontré un proyecto antiguo que estaba analizando a Ruby por su cuenta y generando etiquetas, pero era solo para Ruby 1.8. Era más lento que ctags, pero no tan malo.
Así que estoy buscando algunas alternativas. ¿Conoce algún otro generador de etiquetas de rubí que funcione y que le brinde un rendimiento adecuado y sea rápido?
¡Gracias!
Edición : Encontré un proyecto muy bueno que funciona con Ruby 1.9+ y es preciso y rápido. Lo recomiendo:
Ctags exuberantes fuera de la caja no hacen una serie de cosas útiles:
No se ocupa de:
module A::B
No etiqueta (al menos algunos de) los métodos del "operador" como
''==''
No admite etiquetas calificadas,
—type=+
No genera etiquetas para constantes o atributos.
Parche disponible, pero es solo para la versión 5.5 y ya no funciona.
Otros proyectos:
- https://github.com/tmm1/ripper-tags (la mejor opción para Ruby 1.9+)
- https://rubygems.org/gems/rdoc-tags (muy lento pero funciona con 1.8)
El esfuerzo de Ripper-Tags resuelve todo lo descrito aquí. Se basa en el analizador oficial de Ruby, que también es bastante rápido. https://github.com/tmm1/ripper-tags
gem install ripper-tags
cd your_project/
ripper-tags -R
También apoya a Emacs también.
También hay https://github.com/eapache/starscope
No es compatible con el formato de etiqueta extendida (todavía) pero hace otras cosas como exportar bases de datos cscope.
Un parche está disponible a partir de 2013-02
- https://github.com/fishman/ctags (parche de ctags para Ruby, incluido
rspec
)
El generador de etiquetas rspec no reconocerá correctamente los bloques de describe
que comienzan con semicolor ( :some-method
), pero aparte de eso, es genial.