ruby-on-rails - 是否有一个 gem 可以让 Git 和 Rails 协同工作以实现更强大的迁移?

标签 ruby-on-rails git rubygems rails-migrations

我以前听说过 Rails 迁移存在缺陷,但直到最近我才真正亲身经历过任何这样的例子。我现在意识到,如果迁移依赖于代码的特定状态,那么如果您尝试在两年后克隆存储库并运行所有迁移(就像很多迁移一样),那么您就会遇到麻烦其中取决于旧版本的代码)。

我认为这家伙有一个好主意:

http://www.mattdipasquale.com/blog/2011/02/28/rails-model-safe-migrations/

有没有这样的东西:一个 gem(比如说)来自动检查添加每个迁移的提交,一直到 HEAD?

显然,这不会是一个万无一失的系统,因为它确实依赖于每次迁移在提交到存储库时都可以从干净的石板合法地进行(我可以想象团队编写的迁移仅顺便说一句基于他们对数据库所做的事情完全在版本控制之外)。但这肯定比什么都没有好。

最佳答案

我认为可能会发生两种情况,每种情况的解决方案都不同:

  1. 您开发代码并以较小的发布增量交付它。该解决方案在某处运行,其中有数据,每次交付新版本时都必须迁移它。

    ==> Rails 是如何开发和交付新版本的完美答案。我一直这样做(有 2 个应用程序,其中我是唯一的用户),并且从未遇到过问题。

  2. 您开发代码,并交付许多小版本(使用第一种方法)。然后,您希望在新服务器上实例化它,而不在那里存储任何数据。

    ==> 然后转储您的方案并将其加载到新服务器上是最好的方法,只是为了确保一切都就位。

我不知道 Capistrano,也许有其他选择可以做到这一点。因此,如果您有类似场景 1 的情况,请使用 Rails 方法,如果是场景 2,请使用转储和加载方法。

关于ruby-on-rails - 是否有一个 gem 可以让 Git 和 Rails 协同工作以实现更强大的迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9853307/

相关文章:

git - 跨多个 git 存储库组织 Kubernetes 对象的最佳实践?

ruby - 需要 gem 是否会加载所有内容,包括我不使用的东西?

ruby - Netlify 部署 "failed during stage ' 构建站点' : Build script returned non-zero exit code: 42"

ruby - 临时修改(核心)Ruby 模块的库

ruby-on-rails - 机架安装应用程序与 sinatra 应用程序的 rails 安装

android - 如何制作一个 java 对象以从我的 Rails API 接收模型?

git - 如何避免开发人员提交而不提及 Github 上提交消息的问题

ruby-on-rails - 确定具有特定风格的图像存在与否 - 回形针 rails

ruby-on-rails - 一旦启用 Action 缓存,format.js 就不会操作 dom

git - 添加 -A/commit 主/所有子模块的简单方法