vim-jp/issues — Issue #79: rubypathの検索時に警告が出る。
Author: mattn
Created: 2011-10-13 01:31:36+00:00
State: open
Labels: bug, patched, posted

既にパッチ送付済みの物ですが、忘れない為に。

runtime/ftplugin/ruby.vim

rubypathを検索しているのですが、Gem.all_load_pathsはruby1.9ではdeprecatedになっている為、起動する毎に警告が出る。
以下の様に`Gem::Specification`を優先してフォールバックする様に修正。

```diff
diff -r f530aef0d959 runtime/ftplugin/ruby.vim
--- a/runtime/ftplugin/ruby.vim	Wed Oct 12 22:02:14 2011 +0200
+++ b/runtime/ftplugin/ruby.vim	Thu Oct 13 10:23:04 2011 +0900
@@ -73,11 +73,11 @@
if exists("g:ruby_path")
let s:ruby_path = g:ruby_path
elseif has("ruby") && has("win32")
- ruby VIM::command( 'let s:ruby_path = "%s"' % ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,}) )
+ ruby VIM::command( 'let s:ruby_path = "%s"' % ($: + begin; require %q{rubygems}; Gem::Specification.map{|s|s.gem_dir}.sort.uniq; rescue NoMethodError; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,}) )
let s:ruby_path = '.,' . substitute(s:ruby_path, '\%(^\|,\)\.\%(,\|$\)', ',,', '')
elseif executable("ruby")
- let s:code = "print ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,})"
- if &shellxquote == "'"
+ let s:code = "print ($: + begin; require %q{rubygems}; Gem::Specification.map{|s|s.gem_dir}.sort.uniq; rescue NoMethodError; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,})"
+ if &shellxquote != '"'
let s:ruby_path = system('ruby -e "' . s:code . '"')
else
let s:ruby_path = system("ruby -e '" . s:code . "'")
```