有没有办法在Vim的“嵌入式”Ruby中使用Gems?

时间:2012-12-22 19:21:02

标签: ruby gem vim load-path

我正在尝试使用Vim内部的tinder gem。我希望能够写入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的依赖关系,所以它找不到'法拉第',例如。也许我可以递归解压?

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

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

我很确定宝石原生扩展将无法工作,无论我尝试什么 - 但我很高兴能够要求纯Ruby宝石。

非常感谢。

1 个答案:

答案 0 :(得分:2)

经过长时间的狩猎,实际上非常简单。

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

然后你只需要通过常规方法为你编译的版本安装宝石。

默认情况下,1.9和更高版本中的宝石将在您的加载路径中可用,因为它们对rubygems自动加载的方式进行了一些更改。