ctags for Ruby libs
“Go to definition” and tags
Most IDE (and some Editor) support a function called: “Go to definition”, allow us quick jump to class/function. Basicly, the IDE/Editor use a mapping file called tags with format like that:
DynamoDBError lib/aws/dynamodb_operator.rb /^ class DynamoDBError < StandardError; end$/;" c class:Aws
DynamodbHelper spec/support/dynamodb_helper.rb /^module DynamodbHelper$/;" mThis includes:
- identifier: The name of the identifier (eg: function, method, variable, ..)
- file_path: The path to the file where the identifier is defined.
- address: The byte offset, or the regex to find the location of this identifier in the file.
- language_specifier: Specifies the language of the source code (eg: c ~ Class, m ~ Module, …)
tags in Rails + Vim
To use this feature for Vim/NeoVim, we can call ctags to generate tags file, and use Vim plugin to navigate based on this file.
ctags -R --languages=ruby --exclude=.git --exclude=log --exclude=tmp .tags for Rails library
Same above methods, we can generate tags for all Rails libraries (which are installed for current Ruby version) by add the lib paths to command
ctags -R --languages=ruby --exclude=.git --exclude=log --exclude=tmp . $(bundle list --paths)Now in Vim/Neovim, we can go to definition in Rails/Ruby libraries :D