首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails:进行不可逆转的迁移是不是很糟糕?

在进行Rails应用的迁移时,确保迁移过程是可逆的非常重要。这是因为不可逆转的迁移可能导致数据丢失或应用无法正常运行。

在Rails中,迁移是一种用于修改数据库结构的机制。通过创建和应用迁移,可以更改数据库中的表、列或其他结构。迁移可以被回滚,这意味着可以撤销迁移并恢复数据库的先前状态。

在进行不可逆转的迁移之前,务必确保已经备份了数据库和应用程序代码。这样,如果迁移导致问题,可以轻松地恢复到先前的状态。

总之,进行不可逆转的迁移是很糟糕的,因为它可能导致数据丢失或应用程序无法正常运行。在进行迁移时,务必确保迁移过程是可逆的,并且已经备份了数据库和应用程序代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

不是 Ruby,而是你数据库

糟糕是,这些 “错误” 被团队贴上了 “以 Rails 方式完成” 标签。 Rails 里到处都是这样 footgun(footgun,意即伤自己枪,Rails 称其为“尖刀”。...其中大部分本身是无害容易以次优方式连接表,对未索引进行排序或过滤。Active-record 充满了一些工具,可以容易地滥用数据库,无需警告。...使用 Rails 人性化 active-record API,容易忘记你仍然只是在查询一个复杂关系数据库。它需要微调、调优和调整,以便在合理时间内为你提供数据。...使用 Rails容易累积许多小错误,从而使数据库成为瓶颈。但是,即使所有这些都在你控制之下,高性能数据库调用仍然比许多其他调用慢很多。...如果添加(或删除)了索引,它们必须伴随着至少调优索引迁移。 保持所有数据库调用简单。尽可能少连接,尽可能少过滤器和排序。一般来说,数据库可以更容易地为此进行优化。

13830

可以使用框架但千万不要依赖框架

当我们遇到需求不是符合框架,我们就会犯懒。我们就会按照框架既定方法来解决我们问题。因为使用框架既定方法来解决方法是最简单,这时候我们已经忽略了如何设计对未来扩展等需求最好代码了。...作为一个更职业开发者,我们必须不依赖框架独立思考。 这就是你是不是经常听到某人在抱怨某个框架?...我已经听见好多人抱怨过Rails了:“Rails应用总是糟糕结构”或者“Rails测试总是这么慢”。最 开始,我也曾经这么认为。但是现在,每当我听到这些抱怨时候,我就会意识到其实抱怨者是懒惰。...Rails,或者其他框架,只是一个工具而已,你要做 是控制它。把坏代码归咎于无生命框架只能说明你不专业。 选择正确工具,或者正确地使用工具 使用框架开发也是在写代码。...决定变得更专业 我们必须根据基本需求来选择工具。框架确实能做很多事情,并且需求会决定整个代码结构。有的时候框架会适合某个需求。

1K50
  • “逃离”单体,GitHub微服务架构实践

    GitHub 创建者也是开源贡献者,他们在 Ruby 社区非常有影响力。正因为如此,GitHub 架构深深地扎根于 Ruby on Rails。...让每个人在参与开发之前都学习 Ruby,让所有人都在同一个单体代码库上进行开发,不再是扩展 GitHub 最高效、最优化方法。根据康威定律,任何组织设计系统,其结构都是对组织沟通结构复制。...微服务 因此我们就想,是不是该从 Ruby on Rails 单体迁出,转向一种微服务架构了?如果是这样的话,我们该如何进行?单体架构和微服务架构各有所长。...这往往会导致分布式单体,这是最糟糕单体,同时也是最糟糕分布式。没有获得任何好处(比如,单独快速地向生产环境中部署一组特性),却还要应对微服务复杂性。...接下来,找出开发人员在单体环境中开发时所使用助力工具。随着时间推移构建一些共享工具以方便单体开发,这是常见

    57720

    GitHub 团队开发环境迁移至 GitHub Codespaces!

    当 github.com 第一个 commit 被推送时,Rails 只有两年历史,AWS 才诞生一年,Azure 和 GCP 尚未问世。...GitHub 称,他们开发平台在不断发展,过去几个月里,工程团队从 macOS 转向使用 Codespaces 进行 github.com 大部分开发。...但现实情况是,虽然付出了许多努力,这样开发环境却依旧十分脆弱。任何看似无害变更都可能会导致本地环境失效,更糟糕是,这种情况往往需要数小时宝贵开发时间来恢复。...GitHub 表示,迁移到 Codespaces 解决了现有开发环境中缺点,激励他们进一步推动改进产品,并提升了整体开发体验。虽然此次开发环境迁移结局还算美好,但刚开始时还是颇具挑战性。...GitHub 表示,他们此次迁移至 Codespaces 作为默认开发环境举动虽然遇到不少挑战,但对最后结果十分满意,未来会继续优化在上面开发体验。

    45430

    构建工作负载,而非基础设施:重新定义K8s平台

    寻找 Rails 时刻 在 2019 年,Bryan Liles 在 KubeCon 上发表了主题演讲“寻找 Kubernetes Rails’ 时刻”。他大胆地指出 YAML 确实很糟糕。...值得记住是,应用程序抽象仍然是平台构建者留下任务。原因显而易见。您希望如何将代码从开发环境迁移到生产环境?每个团队和组织都会以略微不同方式进行操作。...只要平台表面下方 API 仍然可以进行调整,我们就拥有了一个成功解决方案。 这一宏伟愿景转化为设计理念——最终转化为需求。...它留下了诸如“如何将代码从开发环境迁移到预发布环境再到生产环境?”以及“如何在另一个区域或云中恢复生产环境?”等问题。平台应该提供一条解决这些问题黄金路径。...我在这里分享内容来自我在 Northflank 上使用 Kubernetes 构建平台经验。如果您在 KubeCon 上看到我,我乐意听取您想法。

    8610

    GitHub代码仓库服务那些事

    恭喜GitHub不用再烧投资人钱,也恭喜微软云服务有了更好硬实力之外,普通开发者可能需要考虑一下你代码数据该怎么存放了:建设备份?进行迁移?自建服务?...4月份官方博客迁移声明 数据迁移、备份 GitLab在新项目创建地方,显眼设置了GitHub迁移操作界面,如果你想做一份备份,只需要点一下按钮,耐心等待GitLab把GitHub上仓库Clone...如果你目的是专注开发软件,又不太想进行代码托管服务维护的话,迁移数据或者备份数据是一个不错选择。...后面去淘宝,阿里上市前夕进行了技术升级,也开始把SVN往Git进行迁移,选型还是GitLab,于是坚定了机器上继续跑一套GitLab作为个人实验田想法,期间把虚拟机里应用从VMware迁移到VMBox...$一个月服务器就能跑流畅。

    1K10

    程序员过关斩将--作为一个架构师,我是不是应该有很多职责?

    架构师工作在很多撸码开发者眼中是一项神圣工作,而且富有挑战性。...,在高层和底层灌输一些错误思想,从而导致做出一些不可逆转糟糕决策,使公司陷入危险逆境。...很多时候,公司给予架构师这个角色太多责任,管理者希望他们能在突发性能问题时能快速解决问题,还能推动企业快速转型,甚至能帮助企业文化快速建立,作为一个架构师是不是要抗下这些职责呢?...很难用代码多少或者质量来衡量一个架构师好坏,如果一个系统在正常运行5年后依然能良好运行并且可以承受一定变更能力,说明这个系统架构师工作是出色。...关注项目的实际落地情况,并根据项目实施中反馈问题进行战略适当调整。一个合格架构师从来不会忽略来自实际项目中问题反馈。

    39850

    Rails存储库从SVN转向Git

    在Ruby on Rails 2.1版本发布前夕,Rails开发团队也准备将代码存储库从Subversion迁移到Git之上。...在Ruby on Rails官方博客里,DHH写到: 我们准备将Rails开发代码存储库从Subversion迁移到Git之上,迁移过程将会在近期内完成。...在版本存储库迁移同时,我们也会将问题跟踪系统转移到基于Rails开发Lighthouse应用之上,于是到目前为止,我们存储库和问题跟踪系统都是使用Rails应用,这对我们是一个很好鼓励。...目前,Git也获得越来越多国内开发者认可,并在项目开发中尝试使用Git来进行源代码版本控制管理工作。...目前,包括Rails在内,已经有不少知名项目已经迁移到Git之上来进行源代码版本管理,比如Rubinius、Merb、Wine、 U-boot、Beryl等项目。

    1.4K90

    GitHub 前 CTO:全面微服务是最大架构错误!网友:这不是刚改完 GitHub 吗

    对于为什么不太看好微服务,Warner 给出理由如下: 一般来说,整个工程团队在一个大型应用程序中工作(想像 Rails 应用程序中整个站点),比推理微服务将以何种方式失败要容易得多。...也有开发者表示,微服务主要问题很简单,就是大多数人不了解如何正确设计它们。一个设计糟糕单体架构几乎总好过设计糟糕微服务架构。单体保护企业免受不良设计影响底线要高得多。...如何迁移 一直以来, GitHub 是基于 Ruby on Rails 单体架构,直到 2021 年,为了让超过一半开发人员在单体代码库之外富有成效地开展工作,GitHub 以赋能为出发点开始了向微服务架构迁移...GitHub Rails 应用程序(单体)使用 Twirp(这是一个 gRPC 风格服务到服务通信框架)和它通信,依赖方向是由内到外。...下一步,找一些简单小特性从单体中迁移出来,例如那些没有复杂依赖和共享逻辑特性。GitHub 是从 webhook 推送和语法高亮开始

    1K20

    JavaScript 生态系统非常奇怪

    历史背景 10 年前,JavaScript 还是非常糟糕。它没有 Import、Class、async、箭头函数、模板字面量、解构赋值、默认参数等能力。而且它主要运行环境只有浏览器 DOM。...Rails 因为使用了元编程进行了很多魔幻操作而受到了很多批评,而 Elixir 具有宏,但是所有上述内容都是在语言可以完成范围内。 但是,JavaScript 就不一样了。...如果配置正确并且您想导入 CSS 或 PNG 文件,它会乐意为你完成。 我之前提到过 Rails 因为使用元编程而受到很多批评。...许多人将其与 PHP 甚至 Rails 进行比较: 我不确定这些比较是不是意味着更积极方式,但我会说从我角度来看,这是一件非常好事情。...回到手头上的话题,令人印象深刻是,这样功能只有通过与打包器合作才能实现,这相当于对 JavaScript 语言本身进行了更改,意义深远,而且我敢说,也是令人愉快。

    20230

    设计匠艺 | 清晰设计意图

    语言纠缠不清,实则暴露了你思想混乱,就像行走在陌生城市异乡人,城市地图成了他唯一指路明灯。糟糕是,地图用唯一色彩试图简单阐明简单本质,却因为缺乏清晰层次感让人变得无所适从。...架构是团队知识传递(分享)重要部分。聪明做法是在架构过程中选择遵守一种设计原则,并运用一种或多种一致模式或风格。 Ruby On Rails之所以能够得到普遍流行,正是基于这一原因。...它整个设计意图可以由“惯例优于配置”原则和MVC模式来阐释。 Rails目的单一,就是基于MVC模式打造一个敏捷Web框架。...而在函数式编程语言中,这种不变性则透过基本函数来体现,再以组合子方式满足变化需求。 Rails是另一种钳制变化方式,它将契约视为一种惯例,以运行时动态组装取代静态配置。...鉴于任何人都无法改变过去,这也意味着数据库将累积这些事实,而非原地进行更新。虽然过去可以遗忘,但却是不能改变

    80950

    不要学习“网红”编程语言

    Ruby on Rails (也简称为 Rails)是一个使用 Ruby 编程语言开源 Web 应用程序框架,曾一度大受欢迎,Rails 出现极大推动了 Ruby 语言发展。...在 2004 年之后,Rails 社区贡献出了广泛插件(Gems)、书籍(光 2006 年就有 10 本关于 Rails 书籍问世)、培训、一个主要会议(RubyConf)等等。...这导致我们无法以需要速度进行迭代。” Groupon 工程师不得不研究 Ruby on Rails 一系列替代方案,最终选择了流行 Node.js,并花了一年时间进行迁移。...遗憾,StackOverflow 并不提供可供访问趋势指标,倒是有一款基于标签活动独立工具。经过查阅,发现 Ruby 这几十年来持续下滑、而且身处底部象限。...那我们是不是不该在职业规划中学习 Ruby 或者 Rails?话可不能这么说。市场对于 Rails 和 Ruby 开发者需求仍然相当旺盛,或者说市场对任何语言开发者都需求旺盛。

    2.1K30

    我们如何转型微服务?

    我在 SoundCloud时, 曾经负责把一个巨石架构 Ruby on Rails 应用迁移到微服务。这个故事技术层面, 我做过多次演讲并且在 SoundCloud 技术博客上发表过系列文章。...一、Next项目 我刚加入这家公司时,最重要项目就是我们内部代号为v2项目,它把我们网站进行重构并以“The Next SoundCloud”品牌名进行发布。...更糟糕是: 这段时间一半以上都将用于等待, 即等待工程师处理某项工作。 利用上面的图可以容易地发现一个人过程中有明显怪异步骤。显而易见我们应该为巨石架构定制发布链。...它大部分听起来和我在ThoughtWorks项目类似, 但有一个方面对我是全新:强制性代码审查。...这段代码在过去几年里受到了很多影响, 技术债务无处不在。除了我们自己制造混乱, 我们还必须从 Rails 2.x 升级到 3, 这本身就是一个巨大迁移

    88980

    omnibus-gitlab迁移记录 原

    gitlab迁移 了解机器环境(操作系统,配置,网络等) 保持迁移一致性 迁移时保持操作系统一致性 迁移时gitlab版本一致性 gitlab安装方式也要保持一致(安装时建议用清华镜像)...正式迁移前先预演 gitlab备份与恢复(需要停机) gitlab迁移时问题处理(如:git project(非空)界面不显示branches、files、commits等相关信息【需要清理redis...chown -R git:git 1462837514_gitlab_backup.tar 使用恢复命令进行恢复  # Stop processes that are connected to the...Start GitLab sudo gitlab-ctl start # Check GitLab sudo gitlab-rake gitlab:check SANITIZE=true 对gitlab进行修复.../gitlab/gitlab-rails/uploads -type f -exec chmod 0644 {} \;   sudo find /var/opt/gitlab/gitlab-rails/

    1.3K20

    不要让框架控制你项目,过度依赖框架会害了你

    虽然有些框架友好,会努力保持向后兼容,而且每次升级都是很小一步,但更新还是避免不了。而我们只能俯首听命,必要时修改现有代码。...此外,框架所能提供性能与扩展水平是相较于其他类似的框架而言。如果我们能选择底层架构,并进行优化,那么就能利用更少代码,编写更高效、更具扩展性软件。...例如,推特“Fail-Whale”(失败鲸)事件就是因为Rails糟糕性能引发,后来推特宣布用Java重写了Rails代码库。此次事件证明,大多数框架都会显著增加性能开销。...而框架会损害可扩展性,因为我们很难从一个框架迁移到更适合其他框架或架构,或者建立更合适设置。在遇到“Fail-Whale”之类问题时,我们都希望优化有问题代码,而不是用Java重写所有代码。...因此,我们代码不仅会与框架紧密耦合,而且还会将业务逻辑和样板代码彻底混在一起。更糟糕是,他们经常鼓励我们通过这些“细节”来传播业务逻辑。

    79530

    一键安装Gitlab后备份、迁移与恢复

    gitlab简介 GitLab,是一个使用 Ruby on Rails 开发开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用。...迁移如同备份与恢复步骤一样, 只需要将老服务器/var/opt/gitlab/backups目录下备份文件拷贝到新服务器上/var/opt/gitlab/backups即可(如果你没修改过默认备份目录的话...比如新服务器安装是最新8.5版本Gitlab, 那么迁移之前, 最好将老服务器Gitlab 升级为8.5再进行备份。...,gitlab是8.8.5迁移到另外一台服务器上,其它页面都可以正常显示,但是一点击项目就会显示500,。...查看/var/log/gitlab/gitlab-rails/production.log日志,发现上述错误 。 这是gitlab数据迁移一个缺陷。

    2.2K30

    GitHub 关系型数据库垂直分库实践

    十多年前,与当时大多数 Web 应用程序一样,GitHub 也是一个使用 Ruby on Rails 开发网站,它大部分数据都保存在 MySQL 数据库中。...我们在查询语句上添加注解,就可以识别出那些跨越多个模式领域查询和事务,并可以允许一些例外情况。如果一个领域没有违反这个规则,就可以进行虚拟分库,它们物理表就可以被迁移到另一个数据库集群中。...不停机迁移数据 模式领域在经过虚拟分拆之后,就可以进行物理表迁移。为了进行数据迁移,我们采用了两种不同方法:Vitess 和写切换(Write-Cutover)。...有了 ProxySQL,我们可以快速改变数据库流量路由,将对客户端(也就是我们 Rails 应用程序)影响降到最低。 基于这样结构,我们可以自然地将数据库连接迁移到 cluster_b。...我们通常选择是“普通”技术,这些技术被证明适合我们规模,因为对于我们来说,可靠性是最为重要

    1.5K11
    领券