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

Ada*_*amB 18 versioning version-control ruby-on-rails

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

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

Max*_*ick 22

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

添加到environment.rb:

APP_VERSION = `git describe --always` unless defined? APP_VERSION
Run Code Online (Sandbox Code Playgroud)

现在你可以<%= APP_VERSION %>在你的意见中.请注意,这不适用于Heroku.

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


ide*_*lum 5

您可以使用subversion关键字:

本质上,您可以有一个辅助方法...

def app_version
    "$Id$"
end
Run Code Online (Sandbox Code Playgroud)

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

svn propset svn:keywords "Id" application_helper.rb
svn ci application_helper.rb
Run Code Online (Sandbox Code Playgroud)

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

def app_version
    "$Id: application_helper.rb 282 2009-06-26 10:34:17Z root $"
end
Run Code Online (Sandbox Code Playgroud)

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