波浪号大于 (~>) 在 Ruby gem 依赖项中是啥意思? [复制]
Posted
技术标签:
【中文标题】波浪号大于 (~>) 在 Ruby gem 依赖项中是啥意思? [复制]【英文标题】:What does tilde-greater-than (~>) mean in Ruby gem dependencies? [duplicate]波浪号大于 (~>) 在 Ruby gem 依赖项中是什么意思? [复制] 【发布时间】:2011-07-07 10:23:18 【问题描述】:~>
在 Ruby gem 依赖的上下文中是什么意思?
例如,在 RubyMine IDE 中打开旧项目时,我得到了这个 留言
项目所需的宝石未附: arel (~> 2.0.2), rspec-expectation (~> 2.5.0)...我在 Ruby 世界的其他地方看到过这种波浪号大于符号(它不是 特定于 RubyMine)。此操作员是否有其他名称 听起来很尴尬的波浪号大于?
【问题讨论】:
@Jörg,感谢您指出重复。我已投票结束我的问题。我还编辑了另一个问题的标题以包含“波浪号大于”以帮助进行文本搜索。 我现在听说这个算子叫做“twiddle-wakka”、“近似版本”和“悲观版本”(rubyrogues.com/045-rr-bundler-with-andre-arko) 我称之为“曲线火箭”,而不是“哈希火箭”(=>
)。
我最近听说它叫做“模糊匹配”运算符。
另一个变种:“悲观版本操作符”rubytapas.com/2016/09/29/episode-447-pessimize
【参考方案1】:
它的意思是“等于或大于最后一位”,例如~> 2.3
表示
“等于 2.3 或大于 2.3,但小于 3.0”,而 ~> 2.3.0
将
表示“等于 2.3.0 或大于 2.3.0,但小于 2.4.0”。
您可以将其发音为“大约大于”。
§ Pessimistic version constraint
【讨论】:
大约大于!这很有意义——~
表示“大约”,>
表示“大于”。我一直以为~>
应该看起来像一个箭头,并没有真正理解符号的特殊选择......突破。
请注意,~> 2
和 ~> 2.0
的行为相同,并且都会生成与 >= 2.0
和 < 3.0
匹配的版本【参考方案2】:
这意味着任何低版本等于或大于,但不是主要版本。
例如arel (~> 2.0.2)
,将使用(如果可用)版本
但它不会使用 2.1.?
【讨论】:
2.1不是小版本吗?【参考方案3】:根据互联网
如果 RubyGem 依赖项使用语法“~> 1.4.37”,则表示“版本大于或等于 1.4.37,但不是 1.5 或更高”。 1
换句话说,对于你arel
可以是2.1 > version >= 2.0.2
并且rspec-expectation
可以是2.6 > version >= 2.5.0
。
【讨论】:
【参考方案4】:这意味着您期望的 gem 是 2.0.2 或更高版本,但在 arel (~> 2.0.2)
的情况下不是 2.1@ 这样做是因为人们不应该在次要修订中发布破坏性语法更改。所以arel 2.0.3
预计会在 2.0.2 上进行错误/稳定性修复
【讨论】:
以上是关于波浪号大于 (~>) 在 Ruby gem 依赖项中是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
css选择器 ~ (波浪号)、+(加号)、>(大于号)的用法解析和举例
在 Gemfile 中指定 rubygem 时 ~> 和 >= 有啥区别?