【问题标题】:How can I install a local gem?如何安装本地 gem?
【发布时间】:2010-09-18 05:21:45
【问题描述】:

如果我将 .gem 文件下载到计算机中的文件夹中,我可以稍后使用gem install 安装它吗?

【问题讨论】:

标签: ruby rubygems


【解决方案1】:

另外,您可以使用gem install --local path_to_gem/filename.gem

这将跳过在您离开 --local 时发生的通常的 gem 存储库扫描。

您可以通过gem install --help 找到其他魔法。

【讨论】:

  • 我下载了 zip 格式的 gem,例如 ruby​​gems。所以这里没有 .gem 文件。如何从本地安装它?谢谢。
  • @BoratSagdiyev,zip 文件不是宝石。像大多数 zip 文件一样,您需要先将其解压缩,然后才能对其进行大量操作。如果它包含 gem,那么您可以在提取的 .gem 文件上使用 gem install。我不记得 gem 格式的内部结构了。它可能只是一个带有特殊标题的 zip 文件,但 ruby​​gems 无法识别 zip 文件。
【解决方案2】:

是的,当你执行gem install 时,它会首先搜索当前目录,所以如果你的 .gem 文件在那里,它会选择它。我在gem reference 上找到了它,您可能也会发现它很方便:

gem install 将安装指定的 宝石。它将尝试本地 安装(即 .gem 文件中的 当前目录),如果失败, 它将尝试下载并 安装最新版本的 你想要的宝石。

【讨论】:

  • 链接以无限重定向结束:(
  • 签到说这在 2019 年对我有用。
  • 我有一个Gemfile 但没有.gem 文件。那么这个.gem 文件是什么?它应该包含什么? ——等等——我明白了。你的意思是一个gem-name.gem 文件。请记住,在 unix 上,文件以 '.' 开头是很正常的。所以最好把它拼出来。
  • 我可以从 2020 年的未来确认,该链接对我有用。如果它在遥远的将来不起作用,这里是 Archive.org April 19th, 2020 snapshot
  • "我有 Gemfile 但没有 .gem 文件" - 运行 gem build 以从 Gemfile 生成 *.gem 文件(我是 ruby​​ 新手,这对我有用!)跨度>
【解决方案3】:

您也可以在您的 gem 文件中使用完整的文件名:

gem install /full/path/to/your.gem

这也可以——这可能是最简单的方法

【讨论】:

    【解决方案4】:

    如果您使用 bundler 创建 gem:

    # do this in the proper directory
    bundle gem foobar
    

    你可以在写好之后用 rake 安装它们:

    # cd into your gem directory
    rake install
    

    很有可能,您下载的 gem 也会知道 rake install

    【讨论】:

    • 这似乎是最好的现代答案。接受的答案来自 8 年前
    • 这对于那些创建 gems 的人来说很有用,但对于那些只想安装一个预建的人来说不是那么有用
    【解决方案5】:

    如果您从 github 或其他 scm 主机站点下载项目文件,请先使用 gem build 构建项目,这样您就可以在当前目录中获得一个whatever.gem 文件。然后 gem 安装它!

    【讨论】:

      【解决方案6】:

      如果您想在本地修改的 gem 分支上工作,最好的方法是

      gem 'pry', path: './pry'

      在 Gemfile 中。

      ... 其中./pry 将是您的存储库的克隆。只需运行一次bundle install,您对 gem 源所做的任何更改都会立即反映出来。使用gem install pry/pry.gem,源代码仍会移至GEM_PATH,并且您始终必须同时运行bundle gem prygem update 进行测试。

      【讨论】:

        【解决方案7】:

        转到 gem 所在的路径并调用 gem install -l gemname.gem

        【讨论】:

          【解决方案8】:

          嗯,这是我的 DRY 安装:

          1. 查看缓存目录中已安装 gem 的计算机(默认:[Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache
          2. 将所有“*.gems 文件”复制到自己的 gem 缓存位置中没有 gem 的计算机(默认情况下与第一步相同的用户路径:[Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache
          3. 在控制台中位于 gems 缓存中 (cd [Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache) 并触发 gem install anygemwithdependencieshere (例如 cucumber-2.99.0)

          它是 DRY,因为在安装任何 gem 后,默认情况下 ruby​​gems 将 gem 文件放在缓存 gem 目录中,并且没有意义重复那些文件,如果您希望两台计算机具有相同的版本(或被偏执的安全规则阻止),这会更容易:v)

          编辑:在某些版本的 ruby​​ 或 ruby​​gems 中,它不起作用并触发 警报或错误,您可以将宝石放在其他地方但不会变干, 另一种选择是使用启动集成命令gem server 和 在 gem 源中添加 localhost url,更多信息在: https://guides.rubygems.org/run-your-own-gem-server/

          【讨论】:

            【解决方案9】:

            您可以从 https://rubygems.org/gems/ 下载 gem 或通过 bundle 和 rack 构建本地 gem。

            例如:

            • 捆绑 gem yourGemName
            • 耙式安装

            在安装实际的 gem 之前,请注意安装依赖项。

            • gem install --local /pathToFolder/xxx-2.6.1.gem

            注意:如果在同一台机器上使用 fluentd td-agent 和 ruby​​。请确保使用 td-agent 的 td-agent-gem 命令。 td-agent 有自己的 Ruby。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-10-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多