インストールしている gem の最新バージョンでタグファイルを作成する
rubygems でインストールしている gem から最新バージョンのものだけを対象にして vim 用のタグファイルを作成する。ついでに ruby のライブラリに対してもタグファイルを作成。
こんなスクリプトを用意。これを実行したらそれぞれ ~/.tags-rubygems と ~/.tags-ruby が作成されます。(実行には exuberant-ctags が必要です)
#! /usr/bin/ruby def make_tags(file, paths) args = [ "ctags-exuberant", "-f", file, "--languages=ruby", "-R" ] + paths system(*args) end ruby_tags = File.join(ENV["HOME"], ".tags-ruby") rubygems_tags = File.join(ENV["HOME"], ".tags-rubygems") ruby_paths = $:.select { |path| path[0] != ?. } $stderr.print "Generating tags #{ ruby_paths.join(', ') }..." make_tags(ruby_tags, ruby_paths) $stderr.print " done.\n" require 'rubygems' specs = {} Gem.cache.each do |long_name,spec| name = spec.name specs[name] ||= spec specs[name] = spec unless (specs[name] <=> spec) > 0 end rubygems_names = specs.values.map { |v| v.full_name }.sort.join(", ") rubygems_paths = [] specs.each_value do |spec| spec.require_paths.each do |path| rubygems_paths << File.join(spec.full_gem_path, path) end end $stderr.print "Generating tags #{rubygems_names}..." make_tags(rubygems_tags, rubygems_paths) $stderr.print " done.\n"
実行するとこんな感じ。
Generating tags /usr/local/lib/site_ruby/1.8, /usr/local/lib/site_ruby/1.8/i386- linux, /usr/local/lib/site_ruby, /usr/lib/ruby/1.8, /usr/lib/ruby/1.8/i386-linux ... done. Generating tags Ruby-MemCache-0.0.1, actionmailer-1.2.5, actionpack-1.12.5, acti onwebservice-1.1.6, activerecord-1.14.4, activesupport-1.3.1, acts_as_versioned- 0.2.3, capistrano-1.1.0, cmdparse-2.0.0, color-tools-1.3.0, daemons-0.4.4, fcgi- 0.8.6.1, gem_plugin-0.2.1, gettext-1.7.0, gruff-0.0.5, highline-1.0.1, hpricot-0 .4, io-reactor-0.05, login_generator-1.2.0, memcache-client-1.0.3, mogilefs-clie nt-1.0.1, mongrel-0.3.13.3, mongrel_upload_progress-0.1, needle-1.2.1, net-sftp- 1.1.0, net-ssh-1.0.8, pdf-writer-1.1.3, rails-1.1.6, rake-0.7.1, refe-0.8.0.3, r openlaszlo-0.4.1, ruby-gdchart-1.0.0, ruby-postgres-0.7.1.2006.04.06, rubygems-u pdate-0.9.0, scgi_rails-0.4.3, sendfile-0.9.2, sources-0.0.1, sqlite-ruby-2.2.3, sqlite3-ruby-1.1.0, transaction-simple-1.3.0, tzinfo-0.3.1, webrick-webdav-1.0.. . done.
作成できたら ~/.vimrc に次の行を追加しておきます。
set tags+=~/.tags-ruby,~/.tags-rubygems