使用宝石而不安装它

时间:2009-05-26 22:43:22

标签: ruby rubygems

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

2 个答案:

答案 0 :(得分:6)

你可以,但这很棘手。

首先,使用--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是宝石在寻找宝石时首先应该看的地方。 gempath是寻找宝石时应该检查的所有路径。所以在上面的.gemrc中,我告诉我的代码首先在本地目录中查找,如果没有找到,请检查系统gem目录。

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

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

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

答案 1 :(得分:3)

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

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