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

时间:2013-04-18 10:25:21

标签: ruby-on-rails ruby

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

2 个答案:

答案 0 :(得分:5)

Ruby和Rails与许多其他项目一样遵循Semantic Versioning

但是,他们并不总是遵循这封信。例如,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”的版本更多比打破语义版本控制规则更令人困惑。 (实际上,Ruby 2.0 发布时没有特征和it has led to confusion!)

OTOH,无法将其称为“1.10”,因为RUBY_VERSION常量将版本作为String返回,并且许多工具(错误地)执行类似

的操作
if RUBY_VERSION <= '1.8'
  def foo
  end
end

会破坏,因为String '1.10'实际上小于 String '1.8'

因此,决定以1.9结算。

答案 1 :(得分:1)

我认为Ruby和Rails遵循或多或少的semantic versioning,大致意味着如果版本是X.Y.Z,则在修复错误时更改Z.如果你添加一些东西改变Y(因此所有程序都取决于它,可以说我至少需要X.Y版本),如果引入向后不兼容性你改变X)。 X,Y和Z通常称为Major,Minor和revision。