版本的rails应用程序的最佳方式?

对rails应用程序进行版本化的最佳方法是什么? 我们希望开始进入更加结构化的测试周期,并且每个构建版本的设置版本都是其中的一部分。 我们使用subversion但我想避免使用版本的修订号。 有一种简单的方法可以自动执行此操作吗? 或者我应该只在应用程序助手中定义app_version方法?

(我们使用subversion进行源代码控制)

您可以使用subversion关键字:

基本上,你可以有一个帮助方法……

def app_version "$Id$" end 

$Id$是svn将扩展的关键字(上面的链接有你可以使用的其他链接)。 现在,我们在该文件上设置keywords属性,让svn知道它应该替换关键字(让我们假设是application_helper.rb):

 svn propset svn:keywords "Id" application_helper.rb svn ci application_helper.rb 

现在,如果您查看application_helper.rb,它将会读取(类似这样,版本,日期,用户名已更改)

 def app_version "$Id: application_helper.rb 282 2009-06-26 10:34:17Z root $" end 

显然,您可以将其分配给变量并将其解析为所需的格式,将其包含在视图模板中等。或者执行相同的操作,而不是使用application_helper.rb,只需在根目录中使用名为VERSION的文件。

如果使用git ,则可以在environment.rb文件中创建一个静态变量,该变量从git中提取当前标记名称。 如果你正在使用像git flow这样的东西,那么效果很好。

添加到environment.rb

 APP_VERSION = `git describe --always` unless defined? APP_VERSION 

现在,您可以在视图中<%= APP_VERSION %> 。 请注意,这不适用于Heroku。

资料来源: http : //blog.danielpietzsch.com/post/1209091430/show-the-version-number-of-your-rails-app-using-git

app-version插件( http://github.com/toland/app_version/tree/master )允许您指定应用程序版本的各种组件。 然后,您可以将subversion修订版作为构建的一个组件包含在内,而不是它的主要部分。

作为构建/测试工作流程的一部分,您还可以增加版本的另一个组件。

你可以通过标记你的git / svn分支来版本…或者,最好的方式,环境文件中的常量,就像Rails一样:

 MY_APP_VER = 0.1 

你为什么要使用应用程序助手? 如果需要在屏幕上显示,您可以随时从应用程序助手获取该变量。 但是,在辅助方法中使用属于整个应用程序配置的逻辑似乎很愚蠢。

我认为这应该是您的源控制系统的责任。 我会为每个版本使用一个标记,然后您可以创建一个帮助方法,只需将标记写在您的应用程序中(例如,在页脚中):

 def put_version "

#{$$TAG_NAME}

" end

不记得插入标记名称的语法。