使用gem而不安装它

我需要运行一堆我在服务器上编写的ruby脚本,我没有sudo访问权限。
在我自己的机器上,我使用’sudo gem install ..’安装了一堆gem,并在我的代码中使用它们。
是否有任何机制可以让我使用这些gem而无需在远程机器上正式安装它们?

您可以将它们安装在用户目录中: http : //docs.rubygems.org/read/chapter/3#page83

这看起来可以让你在任何你想要的地方安装gem。

你可以,但这很棘手。

首先,使用--install-dir选项安装它们,即:

 gem install gem_name --install-dir /some/directory/you/can/write/to 

其次,确保您的主目录中有一个.gemrc文件,如下所示:

 gemhome: /some/directory/you/can/write/to gempath: - /some/directory/you/can/write/to - /usr/local/lib/ruby/gems/1.8 

gemhome是gem在寻找gem时首先应该看的地方。 gempath是寻找gem时应该检查的所有路径。 所以在上面的.gemrc ,我告诉我的代码首先在本地目录中查找,如果没有找到,请检查系统gem目录。

第三,要注意一些代码 – 甚至是gem中的代码 – 可以对gem所在的位置做出假设。 某些代码可能以编程方式更改gempathgemhome 。 您可能需要在自己的代码中“改回”。

关于如何做到这一点的文档并不多(阅读:否) – 解决问题的最佳方法是阅读RubyGems源中包含的测试。 这是我在rake任务中破解gem路径以指向我的capistrano的冻结版本的方法:

  Gem.use_paths(Gem.dir, ["#{RAILS_ROOT}/vendor/gems"]) Gem.refresh # picks up path changes