问题描述
|
我想让ctags生成我所有捆绑的gem的TAGS文件,或者rvm gemset目录捆绑程序下的所有gem安装其gem。理想情况下,捆绑包安装或捆绑包更新应在最后一步使用我提供的ruby脚本生成TAGS文件。此后,emacs欣喜若狂。
我可以使用钩子之后有捆扎机吗?
解决方法
您可以看看蒂姆·波普(Tim Pope)在他的
Hookup
项目中的工作:
https://github.com/tpope/hookup
我想,捆绑器运行之后,再增加一个步骤并不难。
就我个人而言,我的Ruby项目中只有一个很好的旧Makefile:
.PHONY: tags
tags:
ETAGS=ctags
rm -rf TAGS
ctags -a -e -f TAGS --tag-relative -R app lib vendor
我有一个早上运行的shell脚本,它设置了我的开发环境,该环境也运行make tags
。
,根据https://github.com/bundler/bundler/blob/dd1e11d8f8e869ffab4fc68d4854b27e1f486de4/lib/bundler/source/path.rb的描述,可以运行\'post_install \'挂钩。它使用元编程来推断方法名称,而gem应该实现该方法。会尝试检查是否可行
,我的方法有两个方面:
1)放置一个rake任务,该任务为项目中的所有代码以及所有必需的gem生成标签:
desc \'Create ctags\'
task :tags do
system \"ctags -R --language-force=ruby app config lib `rvm gemdir`/gems\"
end
2)使用出色的“ foreman” gem(无论如何我一直在使用)运行inotifywait并在文件更改时触发rake任务:
tags: while inotifywait -q -r -e MODIFY --exclude swp$ app/ config/ lib/ ; do bundle exec rake tags; done
如果您不使用工头,您当然可以在外壳中手动运行该行而无需第一个“ tags:”部分。