我想让ctags生成所有捆绑宝石的TAGS文件,或者rvm gemset目录下的所有宝石都会安装其宝石。理想情况下,bundle install或bundle update应该使用我将提供的ruby脚本在最后一步生成TAGS文件。喜欢emacs欢乐。
在我可以使用的挂钩之后是否有任何类型的捆绑?
答案 0 :(得分:1)
你可以看看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
。
答案 1 :(得分:1)
根据https://github.com/bundler/bundler/blob/dd1e11d8f8e869ffab4fc68d4854b27e1f486de4/lib/bundler/source/path.rb,可以运行“post_install”#39;挂钩。它使用元编程来推导方法名称,并且gem应该实现该方法。将尝试检查是否有效
答案 2 :(得分:0)
我的方法有两个方面:
1)放置一个rake任务,为项目中的所有代码生成标签以及所有必需的宝石:
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:”部分的情况下在shell中手动运行该行。