4

tinderVimの中から宝石を使おうとしています。Vimバッファーに書き込めるようにしたいので、:ruby外部からを呼び出すのではなく、を使用してVimの組み込みRubyを使用する必要があります!ruby

コマンドラインで問題なく実行gem install tinderしましたが、埋め込まれたrubyのロードパスに、それを要求できる関連ディレクトリがないようです。

次のようなことを試して、ロードパスを操作してみました。

:ruby `gem env gempath`.strip.split(':').each { |p| $:.unshift(p) }

...しかしほとんど成功していません。

私も同様のことを試しました:

Gem.path.unshift ...

...しかし、繰り返しになりますが、ほとんど成功していません。

Tinderを解凍して絶対パスを要求しようとしましたが、これは機能しているようですが、unpackはgemの依存関係を解凍しないため、たとえば「faraday」が見つかりません。おそらく私は再帰的に開梱することができますか?

誰かがこの問題について何か考えを持っていますか?

私はたくさんグーグルで調べて、Vmailのようなプロジェクトのソースを調べましたが、私が知る限り、VimのRuby内でGemsを使用している人は誰もいません。これはひどい恥のようです。

どんな試みをしても、gemネイティブ拡張機能が機能しないことは間違いありませんが、純粋なRubygemを要求できることは非常に嬉しいことです。

どうもありがとう。

4

1 に答える 1

2

長い間探し回った後、それは実際にはかなり簡単です。

最も簡単な方法は、1.9以降のバージョンのRubyに対してVimをコンパイルすることです。Vimは、コンパイル時にロードパスの最初にあるRubyを使用します。

次に、コンパイルしたバージョンの従来の方法でgemをインストールする必要があります。

gemは、rubygemsの自動ロード方法にいくつかの変更を加えたため、1.9以降ではデフォルトでロードパスで使用できるようになります。

于 2012-12-22T21:45:04.313 に答える