Số Ctager không hoạt động tốt với Ruby, bạn có thể thấy có rất nhiều hack trong mã ruby.c và về cơ bản nó không nhận ra nhiều trường hợp. Một trong những quan trọng nhất là bit này:Bạn có biết một máy phát ctags thay thế cho Ruby
class SomeModule::SomeClass
end
Ctags tạo:
SomeModule someclass.rb /^class SomeModule::SomeClass$/;" c
đó là sai. Mục nhập chính xác và dự kiến là:
SomeClass someclass.rb /^class SomeModule::SomeClass$/;" c
Điều này rất hạn chế. Có một số bản vá lỗi cho các thẻ có sẵn không hoạt động, ví dụ: https://github.com/xtao/overlay/blob/master/dev-util/ctags/files/ctags-5.5.4-ruby-classes.patch nhưng nhìn vào codebase ruby ctags, điều này thực sự cần viết lại hoàn toàn.
Vì vậy, tôi đã chơi với tùy chọn khác là https://github.com/rdoc/rdoc-tags hoạt động đẹp hơn, nhưng chậm. Tôi có nghĩa là thực sự SLOW. Tạo thẻ trên dự án của tôi là 2 giây với ctags nhưng một giờ bằng công cụ này. Có thật không.
Tôi đã tìm thấy một dự án cũ đã phân tích cú pháp Ruby trên chính nó và tạo thẻ, nhưng nó chỉ dành cho Ruby 1.8. Đó là chậm hơn so với ctags, nhưng không phải là xấu.
Vì vậy, tôi đang tìm kiếm một số lựa chọn thay thế. Bạn có biết về bất kỳ máy phát ctash ruby hoạt động nào khác cung cấp cho bạn đầu ra thích hợp và nhanh không?
Cảm ơn!
Chỉnh sửa: Tôi đã tìm thấy dự án rất đẹp mà hoạt động với Ruby 1.9+ và chính xác và nhanh chóng. Tôi khuyên bạn nên nó:
https://github.com/tmm1/ripper-tags
Hoặc có thể nếu bạn biết nhanh và làm việc phân tích cú pháp của Ruby | lexer dễ sử dụng để tôi có thể viết trình tạo thẻ của riêng tôi. Nên làm việc với Ruby 1.8-2.0. – lzap
Lưu ý phụ về việc sử dụng 'lớp SomeModule :: SomeClass': nó không tạo ra một phạm vi lexcical với' SomeModule' làm cha mẹ, bạn nên tránh nó - xem http://stackoverflow.com/questions/15119724/ruby-lexical- phạm vi-vs-thừa kế – tight