在* hook之后是否有任何bundler *?

时间:2011-05-24 07:57:42

标签: ruby bundler

我想让ctags生成所有捆绑宝石的TAGS文件,或者rvm gemset目录下的所有宝石都会安装其宝石。理想情况下,bundle install或bundle update应该使用我将提供的ruby脚本在最后一步生成TAGS文件。喜欢emacs欢乐。

在我可以使用的挂钩之后是否有任何类型的捆绑

3 个答案:

答案 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中手动运行该行。