这是一个更普遍的问题,我是新来的铁轨。指定用于特定宝石的宝石版本?
我试图使用需要JSON的旧版本的宝石,JSON -v 1.6.5
在我的Rails其他宝石应用程序依赖于JSON的新版本,JSON -v 1.8
我想知道是否可以指定json版本与特定的gem一起使用?
谢谢
这是一个更普遍的问题,我是新来的铁轨。指定用于特定宝石的宝石版本?
我试图使用需要JSON的旧版本的宝石,JSON -v 1.6.5
在我的Rails其他宝石应用程序依赖于JSON的新版本,JSON -v 1.8
我想知道是否可以指定json版本与特定的gem一起使用?
谢谢
如果包更新不解决我就叉子,你需要使用相同的版本与其他宝石的依赖关系,然后指向我的叉子。
gem 'some_gem', git: 'https://github.com/user/My-Fork.git'
不,不可能同时使用2个版本的gem。
您的每一个依赖也将有一个版本约束和你的项目只能使用一个版本每颗宝石的。
对于您的具体问题的答案是是,您可以通过指定直接在您的gemfile中使用哪个版本来控制间接依赖项的版本。但是,此版本必须满足直接依赖的版本约束。
一个简单的例子。比方说,你的Gemfile看起来像这样:
source 'https://rubygems.org/'
gem 'somegem', '~> 1.0'
和你的Gemfile锁看起来是这样的(注意,一些地方不再赘述):
GEM
remote: https://rubygems.org/
specs:
somegem (1.0)
json (~> 1.8)
json (1.8)
的Gemfile.lock的指示somegem
依赖于json
,并且json
版本必须大于或等于1.8
但小于2.0
(详细了解~> operator here)。
如果您想使用可以说json
版本1.9
,您可以修改您的gemfile或使用bundler命令来更新锁定文件中使用的版本。
E.g.
source 'https://rubygems.org/'
gem 'somegem', '~> 1.0'
gem 'json' , '~> 1.9'
在特定情况下,如果你有使用版本冲突的间接依赖的两个依赖,宝石将是不相容的。但是,此示例旨在说明如果符合由直接依赖项指定的约束条件,则可以指定间接依赖项的版本。