代码之家  ›  专栏  ›  技术社区  ›  Aditya Mukherji

使用gem而不安装它

  •  7
  • Aditya Mukherji  · 技术社区  · 15 年前

    我需要在一个我没有sudo访问权限的服务器上运行一系列我已经写过的Ruby脚本。
    在我自己的机器上,我使用“sudo gem install…”安装了一堆gem,并在代码中使用它们。
    有没有什么机制可以让我不用在远程机器上正式安装就可以使用这些宝石?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Joe Beda    15 年前

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

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

        2
  •  6
  •   Sarah Mei    15 年前

    你可以,但这很棘手。

    首先,使用 --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目录。

    第三,要知道一些代码——甚至是gems中的代码——可以对gems的位置进行假设。某些代码可能以编程方式更改 吉姆路 宝石 . 您可能需要在自己的代码中“修改它”。

    关于如何做到这一点,没有太多的文档(阅读:否)-了解这一点的最佳方法是阅读rubygems源中包含的测试。以下是我如何在rake任务中破解gem路径,以指向我冻结的capistrano版本:

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