gpt4 book ai didi

ruby - 为什么 bundle 更新后 gem 仍然过时

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:09 25 4
gpt4 key购买 nike

我正在开发一个 gem,它在 github 上。

当我在应用程序中包含 gem 时,进行 capistrano 部署,然后(在服务器上)运行:

bundle outdated

我明白了:

 * authengine (0.0.1 d8baa49 > 0.0.1 de43dfa)

这告诉我有更新的提交可用。为什么 bundle 更新(capistrano 部署的一部分)不提取更新的版本?宿主应用程序的 Gemfile 中没有版本限制,无论如何它们具有相同的版本号,只是不同的提交。

即使我登录服务器并运行

bundle update authengine

之后我得到了相同的“过时”结果。
我在这里缺少什么?

最佳答案

我发现可能导致此问题的一件事是,如果 bundle 中的其他 gem 按不兼容的版本对 gem 提出要求。 Bundler 试图通过选择 gem 的版本来协调这些,以便满足他们的要求。结果是它悄悄地拒绝更新 gems。

检查的方法是在 Gemfile 中设置明确的版本要求。有点像

gem "authengine", "> 0.0.2" #(you'll need to bump the version to make this work)
#or
gem "authengine", :ref => "d8baa49"

然后运行

bundle update authengine

你应该看到类似的东西(这是从我的特殊案例中提取的):

Bundler could not find compatible versions for gem "json": In Gemfile: chef (> 10.8) ruby depends on json (<= 1.6.1, >= 1.4.4) ruby

logical-construct (>= 0) ruby depends on
json (1.7.5)

因此,在我的例子中,明确要求更新版本的 json 是一个问题。

关于ruby - 为什么 bundle 更新后 gem 仍然过时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11159282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com