在什么基础上,ruby和ruby on rails版本被命名

Pre*_*rem 2 ruby ruby-on-rails

我很好奇ruby和ror版本的名称是什么.例如,在ruby 1.9.3之后,它的版本是2.0而不是1.10或1.9.4,因此在rails中.必须有一些惯例或规则.

Jör*_*tag 5

像许多其他项目一样,Ruby和Rails遵循语义版本控制.

但是,他们并不总是遵循这封信.例如,Ruby 1.9与Ruby 1.8不兼容,而Ruby 2.0主要与Ruby 1.9兼容,所以Ruby 1.9应该是Ruby 2.0,而Ruby 2.0应该是Ruby 2.1.

在这种特殊情况下,存在历史性的"营销"原因:术语"Ruby 2.0"已经在Ruby社区中使用了10多年,现在标记一个特定的"神话"版本,具有特定的,经常被谈论的功能,如有限的猴子修补和特征.释放没有这些功能但仍称其为"2.0"的版本比打破语义版本控制规则令人困惑.(实际上,红宝石2.0 释放,而没有特点和已经导致了混乱!)

OTOH,它不可能称之为"1.10",因为RUBY_VERSION常量将版本作为a返回String,并且许多工具(错误地)执行类似的操作

if RUBY_VERSION <= '1.8'
  def foo
  end
end
Run Code Online (Sandbox Code Playgroud)

这将打破,因为String '1.10'实际上是小于String '1.8'.

因此,决定以1.9结算.