Ruby 我如何检查厨师';s版本符合配方内部的gem要求?

Ruby 我如何检查厨师';s版本符合配方内部的gem要求?,ruby,rubygems,chef-infra,chef-recipe,Ruby,Rubygems,Chef Infra,Chef Recipe,Chef::Version包含Chef gem的版本号,我想检查它是否符合食谱中~>10.14的gem要求。使用gem::requirement和gem::Version: Gem::Requirement.new("~> 10.14").satisfied_by?(Gem::Version.new(Chef::VERSION)) 如果Chef::VERSION满足~>10.14的要求,则返回布尔值-true。或者,您可以使用Chef内置的版本比较机制(至少从Chef 12开始提供):

Chef::Version包含Chef gem的版本号,我想检查它是否符合食谱中
~>10.14
的gem要求。

使用
gem::requirement
gem::Version

Gem::Requirement.new("~> 10.14").satisfied_by?(Gem::Version.new(Chef::VERSION))

如果
Chef::VERSION
满足
~>10.14
的要求,则返回布尔值-true。或者,您可以使用Chef内置的版本比较机制(至少从Chef 12开始提供):

Chef::VersionConstraint.new('>=14.0.0')。是否包括?厨师长:版本

这不应该是公认的答案。VersionConstraint类只适用于测试cookbooks的版本,它只接受X.Y或X.Y.Z版本约束,如果我们发布了Chef客户端的预发布版本,它将失败。Gem::Version/Gem::Requirement类是适合使用的类,因为Chef::Version是Gem版本,而不是cookbook版本。@lamont知道这个很好。谢谢你澄清这一点!