我正在构建一个gem,my_gem,它依赖于以下内容:
gem.add_dependency 'money-rails'
gem.add_dependency 'monetize'在我的主应用程序中,我在Gemfile中指定
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包含:
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我的主要应用程序时,我得到以下信息:
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.为什么会发生这种情况?monetize、1.1.1.upnxt.prerelease.1已经锁定的版本大于0和1.1.1.u,低于1.2.0。
更新
在遵循注释中的建议之后,我只将money-rails留在了gem的依赖项中。但现在,当我从我的主要应用程序运行bundle时,我还是看到了这一点:
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,它就成功了,它说:
Using monetize 1.1.1.upnxt.prerelease.1
Using money-rails 1.4.2.upnxt.prerelease.4但是,如果我试着用bundle exec运行任何东西,它都会失败,出现上述错误。我只是不明白是怎么回事。
更新2
看起来,如果我在我的gem中指定了与我的主应用程序相同的硬编码money-rails版本,它就可以管理到bundle。所以现在我有:
gem.add_dependency 'money-rails', '1.4.2.upnxt.prerelease.4'虽然它工作,但我不想让它这样,因为我不想强制任何固定版本的应用程序使用这个宝石。如果有人能给我一个提示,这将是非常感谢!
发布于 2016-01-29 20:45:47
因此,您最初试图包含一个版本的Gem monetize,无论出于什么原因,它都不满足money-rails的依赖要求。但是,money-rails已经对monetize具有依赖关系,因此不应该在gem中为monetize添加依赖项。您应该让money-rails知道要安装它的依赖项的版本,而不是手动锁定它。
https://stackoverflow.com/questions/35067228
复制相似问题