【问题标题】:gem list is showing two versions of a Ruby gem immediately after updating the gemgem 列表在更新 gem 后立即显示两个版本的 Ruby gem
【发布时间】:2011-11-28 21:34:07
【问题描述】:

我刚刚用gem update mime-types 更新了mime-types gem。 gem list 在更新前显示 mime-types (1.16)。更新后gem list 显示mime-types (1.17.2, 1.16)。为什么会显示两个版本?

更多信息:我在同一台计算机上还有其他 Rails 项目。我没有在任何其他项目中更新 mime-types gem。从另一个项目的目录(mime-types 尚未更新)运行gem list 会显示mime-types (1.16)

【问题讨论】:

    标签: ruby-on-rails gem versioning mime-types


    【解决方案1】:

    您已经安装了这两个版本。如果你想删除旧版本(由于依赖关系并不总是可能)使用gem cleanup

    【讨论】:

    • 有趣。听起来像 gem list 显示我机器上所有项目中 gems 的版本号(而不是仅运行其目录 gem list 的项目)。
    • Gems 安装在用户范围或系统范围内,所以是的,它显示所有项目的 gem。
    • 要为每个项目安装 gem,您需要使用 bundlervm gemsets。
    【解决方案2】:

    您拥有哪个版本的 RubyGems? gem -v

    这很有趣:我有最新版本的 RubyGems,但我的系统表现不同:

    gem list => 所有的宝石,所有的版本。 无论我从哪里调用它。
    gem list --local => 与以前相同,但在用户范围内。

    bundle list => 项目中的所有 gem(每个 gem 一个版本)

    bundle updategem update 也是如此。

    bundle update 用新版本替换旧版本(依赖关系由捆绑程序负责),但gem update 保留两者。因此,如果您只想保留最新版本,请运行gem cleanup

    bundle outdated 可能有用:它显示项目中过时的 gem(基于 ruby​​gems.org)

    【讨论】:

      【解决方案3】:

      这可能是由于 gem 依赖而发生的。

      例如,如果另一个 gem 依赖于那个 gem,而另一个 gem 没有为它指定版本,并且(/或)它被更新,并且如果它对那个 gem 的版本的依赖发生了变化......那么你得到了想法。
      有时我做了一个捆绑包,我看到大量新版本被下载。都是因为改变了...依赖关系。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-16
        • 1970-01-01
        • 2014-12-12
        • 1970-01-01
        • 1970-01-01
        • 2016-09-19
        • 2011-10-14
        • 1970-01-01
        相关资源
        最近更新 更多