Rails应用程序的版本号应该在哪里定义?

20

关于如何/在哪里指定应用程序版本号,有没有任何惯例?

例如,在ruby gems中,lib/mygem/version.rb通常是用于此目的的文件。

我猜可以创建像这样的config/version.rb文件:

module MySite
  VERSION = "0.0.4"

  # or in MySite::Application class
  # 
  # class Application
  #   VERSION = "0.0.4"
  # end
end

请查看此链接:https://dev59.com/pnNA5IYBdhLWcg3wNrAy#6178378 - YuriAlbuquerque
你可以像我之前回答的那样做:https://dev59.com/F2ox5IYBdhLWcg3wpFz5#23135266 - Arugin
2个回答

29

我会回答自己的问题,因为我找不到更好的答案。

由于Rails应用程序基本上是 MySite :: Application ,我认为应该通过 MySite :: Application :: VERSION 访问应用程序的版本,所以创建:

config / initializers / version.rb

module MySite
  class Application
    VERSION = "0.0.4"
  end
end

或者从 config/version.rb 文件中获取并从 config/application.rb 文件中引用此文件


要使用config/version.rb路径,请记得在config/application.rb的末尾放置require File.expand_path('../version', __FILE__) - Ninjaxor
1
这是一个好主意,但我将其设置在config/application.rb文件中,因为该文件已经声明了MySite::Application类。如果您需要重新命名您的应用程序,则只需要更改一个地方。最后,在初始化器中设置版本对我来说听起来很奇怪。 - ZedTuX
可能直接在模块上定义 MySite::VERSION,更符合我们已经为 gem 所做的事情。 - collimarco

8
我使用初始化器为Configuration类添加了自己的版本:

app_version.rb

class Configuration
  class << self
    attr_accessor :app_version
  end
  @app_version = 0.72
end

在应用程序中,我可以获取版本:
@app_version = Configuration.app_version

我不确定你为什么想使用版本控制,但我经常使用版本控制来判断特定版本的代码是否正在运行。在这种情况下,我需要每个代码修订版都反映为一个新版本,因此我在我的代码中使用Git版本,并经常只显示前几个字符,因为它可能足够唯一地标识它。

@git_version = `git show --pretty=%H`[0..39]

这太酷了。我怎么从视图中调用它?我漏掉了什么。 - Riccardo
@version = \git log --oneline | head -1`` 可以正常工作 - 对我来说没问题 ;) 只要你能接受*nix命令混入你的代码,因为这在Windows国家里不会很好用 :D - walt_die
或者 \git describe --always`` - Tony O'Hagan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接