LoginSignup
1
1

More than 5 years have passed since last update.

JRuby環境のrubyソースファイルをvimで開くと遅い

Posted at

概要

  • JRuby環境下のrubyソースコードをvimで開くのが遅い。
  • vimrcでlet g:ruby_path = ""またはlet b:ruby_version = "2.3.1"などと記述することで解消する。
  • しかし、バッドノウハウの類なのでより良い解決方法求む。

現象

rbenvでJRuby環境にあるソースコードをvimで開くと2,3秒かかった(グローバルにJRubyを導入して使っている場合も同様)。
導入した何らかのプラグインが影響しているのではないかと考え、まずvimrcやpluginを取り払って起動してみたが、やはり遅い。
もう一歩踏み込んで、--nopluginオプションを付けて起動したところ、瞬時に起動した。

原因

ということで、原因は標準に付属しているpluginにあると目星が付いた。

/vim74/ftplugin/ruby.vimを調べたところ、rubyコードを読み込むときに有効になっているrubyを起動していることが分かった。
(ver.7.4で調べたが、コードを見た感じver.8.0でもほぼ同様だと思われる)
JRubyはJVMを起動するのに時間がかかるので、とにかく起動が遅い。
さらっと読み流したところ、rubyの標準ライブラリのパスを調べて、そのパスにあるタグファイルをtagsに追加することを目的としているようだ。

対策

次のいずれかで、ひとまず問題は解消される。

  1. /usr/share/vim/vim74/ftplugin/ruby.vimを撤去
    • ただし、標準のプラグインなので、いろいろな影響が出ると思われる。
    • また、便利な機能も一緒に無効になってしまう。
    • もちろん、ruby標準ライブラリへのタグジャンプはできなくなる。
  2. vimrcにlet g:ruby_path = ""と記述
    • ruby標準ライブラリへのタグジャンプはできなくなる。
    • (このパスで指定した)rubyに依存した機能が効かなくなるはず。
    • 標準以外のプラグインでも、このグローバル変数に依存したものが 影響を受ける可能性あり。
  3. vimrcにCRubyのバージョン、例えばlet b:ruby_version = "2.3.1"と記述
    • "2.3.1"と書いた部分には、自身の環境に導入されているJRuby以外の適当なバージョンを指定する。
    • ruby標準ライブラリへのタグジャンプは指定したバージョンのコードへのジャンプとなるはずである。
    • 邪悪な感じの対処なので、いろいろ危ういかも。

1はやり過ぎなので、基本的には2か3の対応となる。

課題

ひとまず、起動が遅い問題自体は解決したが、あまり正当な方法とは言えない。
良い解決方法をお持ちの方は、教えていただけると助かります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1