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

时间:2009-06-26 08:17:06

标签: ruby-on-rails version-control versioning

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

(我们正在使用subversion进行源代码管理)

5 个答案:

答案 0 :(得分:21)

如果您使用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

答案 1 :(得分:4)

您可以使用subversion keywords:

基本上,你可以有一个辅助方法......

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的文件在你的根目录。

答案 2 :(得分:3)

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

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

答案 3 :(得分:2)

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

MY_APP_VER = 0.1

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

答案 4 :(得分:0)

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

def put_version
  "<p id='version'>#{$$TAG_NAME}</p>"
end

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