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