我的项目的版本常量应该采用哪种格式

时间:2011-09-23 16:45:45

标签: ruby rubygems

我见过很多东西

Foo::VERSION::STRING
Foo::VERSION
Foo::Version

任何建议最佳/最常见的默认值是什么?

1 个答案:

答案 0 :(得分:2)

首先,Foo::Version似乎对我不对。这意味着该版本是一个类或一个模块,但应该是一个常量,作为前两个示例。

除此之外,这里没有黄金法则。以下是一些例子:

Rails

    Rails::VERSION::STRING

(注意:所有大写的模块VERSION。)

SimpleForm

    SimpleForm::VERSION

Nokogiri

    Nokogiri::VERSION

RSpec

    RSpec::Version::STRING

(注意,模块Version,与上面的Rails进行比较。)

Cucumber

    Cucumber::VERSION

SimpleForm

    SimpleForm::VERSION

上面的大多数都在lib/[name]/version.rb文件中定义了它们的版本,除了在项目根目录中有version.rb的Rails和Cucumber,它已经将它隐藏在{lib/cucumber/platform.rb 1}}文件。

另请注意,以上所有内容都使用String作为版本。 (Rails甚至将MAJORMINORTINYPRE常量连接成一个VERSION常量。)这样可以轻松比较版本:

    "1.2.3" > "0.4.2"  # => true
    "1.2.3" > "1.2.2"  # => true
    "1.2.3" > "1.2"    # => true

但是,当您为补丁级别遇到两位数时,这样的比较会失败:

    "1.2.3" > "1.2.12" # => true

对我而言,定义Foo::VERSION是最好的选择,在lib/foo/version.rb中定义,并将其设为String值。