2012-12-22 58 views
4

我正在尝试使用Vim内部的tinder宝石。我希望能够写入Vim缓冲区,所以我需要使用Vim的嵌入式Ruby,使用:ruby而不是外部调用!ruby在Vim的嵌入式Ruby中有没有办法使用Gems?

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

我试图通过尝试喜欢的东西操纵负载路径:

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

...但收效甚微。

我也尝试了类似的事情有:

Gem.path.unshift ... 

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

我试过解包Tinder,并要求一个绝对路径,它似乎工作,但解压缩不解压宝石的依赖项,所以它找不到'法拉第',例如。也许我可以递归解压缩?

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

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

我很确定gem原生扩展将永远不会工作,无论我尝试 - 但我会很高兴能够要求纯Ruby的宝石。

非常感谢。

回答

2

经过长时间的狩猎后,其实很简单。

最简单的方法是将Vim编译为1.9或更高版本的Ruby。当你编译时,Vim会在你的加载路径中首先使用Ruby。

然后你只需要通过传统的方式安装你编译的版本。

由于它们对rubygems获取自动加载的方式进行了一些更改,因此默认情况下,该加载路径中的宝石将在1.9及更高版本中可用。

相关问题