4

我正在尝试使用tinderVim 内部的 gem。我希望能够写入 Vim 缓冲区,所以我需要使用 Vim 的嵌入式 Ruby using:ruby而不是外部调用!ruby.

gem install tinder在命令行上运行没有问题,但嵌入式 ruby​​ 似乎在其加载路径上没有相关目录能够要求它。

我尝试通过尝试以下操作来操纵加载路径:

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

...但收效甚微。

我也尝试过类似的事情:

Gem.path.unshift ...

...但是,同样,收效甚微。

我尝试过解压 Tinder 并要求使用绝对路径,这似乎确实有效,但 unpack 不会解压 gem 的依赖项,因此它无法找到“法拉第”。也许我可以递归解包?

有人对这个问题有任何想法吗?

我搜索了很多,并查看了 Vmail 等项目的来源,但据我所知,没有人在 Vim 的 Ruby 中使用 Gems。这似乎是一种可怕的耻辱。

我很确定 gem 原生扩展永远不会工作,无论我尝试什么 - 但我很高兴能够需要纯 Ruby gem。

非常感谢。

4

1 回答 1

2

折腾了半天,其实很简单。

最简单的方法是针对 1.9 或更高版本的 Ruby 编译 Vim。编译时,Vim 将使用加载路径中最先出现的 Ruby。

然后,您只需要通过常规方式为您编译的版本安装 gems。

在 1.9 及更高版本中,默认情况下这些 gem 将在您的加载路径中可用,因为它们对 ruby​​gems 的自动加载方式进行了一些更改。

于 2012-12-22T21:45:04.313 回答