在哪里存储 Rails 应用程序的版本

Posted

技术标签:

【中文标题】在哪里存储 Rails 应用程序的版本【英文标题】:Where to store a Rails app's version 【发布时间】:2016-04-18 09:31:35 【问题描述】:

我想维护我的 Rails 应用程序的一个版本,以便我可以轻松地在发布时更新它。我偶然发现了在项目中存储此版本的不同位置,但我不确定存储它的推荐方式:

app/version.rb,在MyRailsAppModule::VERSION; 在app/version.rb,在VERSION; 在app/VERSION 中,作为纯文本; 在VERSION 中,作为纯文本。

我会特别感谢一些专业人士选择的解决方案,以及为什么建议将其存储在那里。

【问题讨论】:

如果它只是关于发布版本。在 Git 中标记发布怎么样 - githowto.com/tagging_versions ? 【参考方案1】:

在一个每 2-4 周部署一次版本的项目上工作,我传统上将版本存储在一个应用程序信息常量模块中,这与您的第一个示例非常相似。一般我们使用了常量 MAJOR_VERSION、MINOR_VERSION、PATCH_VERSION,以及以"#major.#minor.#patch" 的形式显示的方法。

如果您不打算向应用程序的用户显示版本,这显然是不必要的,但我们发现它是有效的,我们更新过程的一个重要部分是更新此文件。

【讨论】:

是的。我们开发新迭代的第一步是确定它的范围,这反过来又决定了我们是更新到新的主要、次要还是补丁号。对我们来说,无论哪种方式,这都是重要的一步,因为我们在 VCS 中命名了版本分支(公司要求),因此无论如何都要有人输入数字。也就是说,在代码中包含这些值已被证明是有用的,因为它们也在自定义生成器中被利用(例如,我们使用种子文件的自定义结构,每个版本都会生成一个新的并根据当前版本命名)。 这真的很有帮助。但这意味着,如果您将范围固定为 2.0.0,那么此版本将在部署到生产之前适用于所有环境,对吗?我宁愿有更具体的版本,比如 2.0.0.pre.1 用于测试/qa 环境,2.0.0.rc.1 用于暂存/uat 环境,并且只有 2.0.0 用于项目的最终/生产状态。 完全正确。遵循这种方法当然有扩展版本控制的空间。我们通过一个相当小的开发团队进行操作,并且发现显示我们正在开发的版本是有益的,但我们倾向于通过开发(通过Rails.env 的派生)至少用版本信息标记rails 环境类型。在我们的案例中,对 UAT 等文件进行更改是没有意义的,因为一旦通过了 UAT,我们的开发人员就会完全放弃。 我明白了。感谢分享!【参考方案2】:

我所在的团队每天部署新版本超过 10 次。我认为期望开发人员以有意义的方式在每次部署时增加版本号很容易出错。

我建议配置您的部署脚本以在 git 中使用 production/2015-01-13_13-18-42 之类的标签标记发布。

这允许查看在给定时间范围内部署了哪个标签。由于 git 允许签出或恢复到标签,因此很容易回滚、测试或只是比较不同的版本。

【讨论】:

感谢您描述您过去的经历。只使用 git 标签听起来确实不错,但我们有自定义端点来打印应用程序版本,这些端点是从应用程序内部的某个地方获取的。否则,也许 CI 工具可以自动解决这个问题,对吧?但我正在寻找这个版本的确切存储位置。

以上是关于在哪里存储 Rails 应用程序的版本的主要内容,如果未能解决你的问题,请参考以下文章

在公共 Rails 应用程序中将敏感数据存储在哪里?

在哪里定义 Rails 应用程序的版本号 [关闭]

在 Rails 中存储布局逻辑的最佳位置在哪里?

Rails:放置在哪里以及如何调用预定的清理方法

在 Rails 中存储(结构化)配置数据的位置

这个 Rails 文件存储在哪里? db/development.sqlite3