Rakeでvim用のタグファイルを生成
世間じゃいろんなIDEでのRails開発環境が整ってきたようですが、vimも負けてはいないよ、ということでtagsファイルを生成するRakeタスクを作ってみました。
生成されたtagsファイルをカレントディレクトリにおいておくと、vim上で^[でクラスやメソッドを定義しているソースに飛べます。戻るのは^tで。
以下スクリプト全文です。lib/tasks以下にtags.rakeなんていう名前で置いてください。
また、実行にはexuberant-ctagsが必要です。
あとは
$ rake utils:tags
で実行できます。
もう少しきれいにすべきところで思い付くのは
- gemのインストール場所をハードコードしているのをなんとかする。
- 同様にバージョンももっときれいに。自動的に検出できるとよいのに。
# vim:set ft=ruby: GEM_ROOT = "/usr/lib/ruby/gems/1.8/gems" desc "Generate `tags' file using exuberant-ctags." namespace :utils do task(:tags) do command = "exuberant-ctags --append --recurse ".freeze File.exist?("#{RAILS_ROOT}/tags") && File.delete("#{RAILS_ROOT}/tags") unless File.directory? "#{RAILS_ROOT}/vendor/rails" rails_dir = current_gems.map{|path| "#{GEM_ROOT}/#{path}" } else rails_dir = ["#{RAILS_ROOT}/vendor/rails"] end (app_dirs + rails_dir).each do |path| $stderr.puts "Generating tags for #{path}." system "#{command} #{path}" || raise("Failed to generate tags.") end end end def app_dirs %w[ app lib components test].freeze end def current_gems %w[ actionmailer-1.2.1 actionpack-1.12.1 actionwebservice-1.1.2 activerecord-1.14.2 activesupport-1.3.1 rails-1.1.2 ].freeze end private :app_dirs, :current_gems