版本的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
不记得插入标记名称的语法。
- 添加accepts_nested_attributes_for时,Fields_for消失
- 发送通过HTTParty发送的post查询
- validates_presence_of导致after_initialize被一个奇怪的自我调用
- Activeadmin:如何筛选与两个或多个搜索词匹配的字符串
- 针对exception传递的should_receive和should_not_receive的RSpec
- ActiveRecord选择参数绑定
- 在Heroku上可以实现像websocket一样的实时行为吗?
- Capybara-webkit无法处理与bootstrap glyphicon的链接
- 我应该如何将alias_method_chain用于构建方法?