首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包无法找到兼容的版本,即使锁定的版本满足所有条件

包无法找到兼容的版本,即使锁定的版本满足所有条件
EN

Stack Overflow用户
提问于 2016-01-28 16:47:46
回答 1查看 94关注 0票数 1

我正在构建一个gem,my_gem,它依赖于以下内容:

代码语言:javascript
复制
gem.add_dependency 'money-rails'
gem.add_dependency 'monetize'

在我的主应用程序中,我在Gemfile中指定

代码语言:javascript
复制
gem 'my_gem', path: '~/my_gem'
gem 'money-rails', '1.4.2.upnxt.prerelease.4'
gem 'monetize', '1.1.1.upnxt.prerelease.1'

我的主要应用程序的Gemfile.lock包含:

代码语言:javascript
复制
monetize (1.1.1.upnxt.prerelease.1)
  money (~> 6.5.0)
money-rails (1.4.2.upnxt.prerelease.4)
  activesupport (>= 3.0)
  monetize (>= 1.1.1.u, < 1.2.0)
  money (~> 6.5.0)
  railties (>= 3.0)

然而,当我尝试bundle我的主要应用程序时,我得到以下信息:

代码语言:javascript
复制
Bundler could not find compatible versions for gem "monetize":
In snapshot (Gemfile.lock):
  monetize (= 1.1.1.upnxt.prerelease.1)

In Gemfile:
  money-rails (= 1.4.2.upnxt.prerelease.4) ruby depends on
    monetize (< 1.2.0, >= 1.1.1.u) ruby

  my_gem (>= 0) ruby depends on
    monetize (>= 0) ruby

  monetize (= 1.1.1.upnxt.prerelease.1) ruby

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

为什么会发生这种情况?monetize1.1.1.upnxt.prerelease.1已经锁定的版本大于01.1.1.u,低于1.2.0

更新

在遵循注释中的建议之后,我只将money-rails留在了gem的依赖项中。但现在,当我从我的主要应用程序运行bundle时,我还是看到了这一点:

代码语言:javascript
复制
Bundler could not find compatible versions for gem "money-rails":
In snapshot (Gemfile.lock):
  money-rails (= 1.4.2.upnxt.prerelease.4)

In Gemfile:
  my_gem (>= 0) ruby depends on
    money-rails (>= 0) ruby

  money-rails (= 1.4.2.upnxt.prerelease.4) ruby

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

如果我尝试bundle update money-rails,它就成功了,它说:

代码语言:javascript
复制
Using monetize 1.1.1.upnxt.prerelease.1
Using money-rails 1.4.2.upnxt.prerelease.4

但是,如果我试着用bundle exec运行任何东西,它都会失败,出现上述错误。我只是不明白是怎么回事。

更新2

看起来,如果我在我的gem中指定了与我的主应用程序相同的硬编码money-rails版本,它就可以管理到bundle。所以现在我有:

代码语言:javascript
复制
gem.add_dependency 'money-rails', '1.4.2.upnxt.prerelease.4'

虽然它工作,但我不想让它这样,因为我不想强制任何固定版本的应用程序使用这个宝石。如果有人能给我一个提示,这将是非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-01-29 20:45:47

因此,您最初试图包含一个版本的Gem monetize,无论出于什么原因,它都不满足money-rails的依赖要求。但是,money-rails已经对monetize具有依赖关系,因此不应该在gem中为monetize添加依赖项。您应该让money-rails知道要安装它的依赖项的版本,而不是手动锁定它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35067228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档