Github 升级到 Rails 5.2.1 了
简评:之前用的可是 3.2,早就该升级了啊。
Github 的 Rails 升级花了大约一年半的时间,这是有原因的,首先,Rails 本身的升级并不总是平滑的,有些版本有重大改变(breaking changes)。 Rails 改进了版本 5 的升级过程,这意味着虽然 3.2 到 4.2 需要 1 年,4.2 到 5.2 只需要 5 个月。
另一个原因是 GitHub 的代码库起码有 10 年的历史,多年来,技术债务逐渐增加,并且必然存在潜在的问题,如果使用的是旧版本的 Rails,工程师将不得不添加更多的猴子补丁(monkey-patch)或实现上游已经实现的功能。
最后,当我们开始时,并不清楚需要哪些资源来支持升级,因为我们大多数人之前从未进行过Rails 的升级,所以我们一直在学习。该项目最初由 1 名全职工程师和一小批志愿者组成,我们将该团队培养成 4 名全职工程师和志愿者。每个版本的升级都意味着我们会学到更多,下一个版本的升级速度会更快。
通过这项工作,我们学到了一些重要的经验,我们希望下一次升级更容易:
- 早升级,经常升级(Upgrade early and upgrade often)
- 保持升级基础架构(Keep upgrade infrastructure in place)
- 使用上游提供的工具,而不是自己造轮子(Upstream your tooling instead of rolling your own.)
- 避免使用私有 api(Avoid using private API’s in your frameworks)
- 解决技术债(Address technical debt often)
- 增量升级(Do incremental upgrades)
- Keep up the momentum.
- Expect things to break.
Github 升级到 Rails 5.2.1 了的更多相关文章
- Mac下Ruby升级与Rails的安装
也是醉了,网上查了半天一脸懵逼.然后自己动手试试 gem install rails瞬间命令行就没反应了,以为命令行挂了,但是一会儿报错说是没有权限. 好吧,那么来这个 sudo gem instal ...
- Rails的静态资源管理(六)—— Asset Pipeline缓存存储方式、预处理、升级等
官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...
- 转:支撑Github的开源技术
原文来自于:http://www.infoq.com/cn/news/2014/03/projects-power-github Github在3月19号开放了新的项目展示页面(Showcase),S ...
- rails再体验(第一个程序)
掌握redmine plugin开发的目标在2016年未实现,2017年继续. 选择<Ruby on Rails Tutorial>教程,windows安装railsinstaller,该 ...
- get github
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括Rubinius ...
- GitHub 使用教程图文详解(转)
大纲: 一.前言 二.GitHub简介 三.注册GitHub账号 四.配置GitHub 五.使用GitHub 六.参与GitHub中其它开源项目 七.总结 注,GitHub官网:https://git ...
- Github学习之路-初出茅庐,接触Github,了解Github
一.了解GitHub 作为一个在线协作网站,GitHub允许程序员们分享和协力于开源项目的工作. GitHub不仅是一个分享开源创作并与其它程序员合作的好地方,你也可以从GitHub上收到自己作品的 ...
- GitHub 使用教程图文详解
大纲: 一.前言 二.GitHub简介 三.注册GitHub账号 四.配置GitHub 五.使用GitHub 六.参与GitHub中其它开源项目 七.总结 注,GitHub官网:https://git ...
- github 创建新项目
二.GitHub简介 GitHub 可以托管各种Git版本库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进 ...
随机推荐
- Java中的几种设计模式
如果从事JAVA相关的开发,都不可避免的要用到抽象和封装,这是JAVA的一个特点,同时也是每个开发者必须掌握的,JAVA是这样,Android更是如此.而设计模式就是告诉我们应该如何写出高效且更具应用 ...
- NPOI工具类
NPOI调用方法 DataTable dt = new DataTable(); Dictionary<string, string> header = new Dictionary< ...
- 关于ueditor使用说明
1.后台配置文件config.json中的各种prefix,相对的都是网站(发布后的)的根目录, 2.需要在iis下将net文件夹转换为应用程序 3.<div> <h1> ...
- jdeveloper12.1.3的安装与卸载
jdeveloper12.1.3的安装步骤:1>安装jdk7.0 2>在命令行中输入:cd C:\Program Files\Java\jdk1.7.0_60\bin 3>命令行安装 ...
- 2.QWidget类
简述: QWidget类是所有用户界面对象的基类. Widget是用户界面的基本单元:它从窗口系统接收鼠标,键盘和其他事件,并在屏幕上绘制自己. 每个Widget都是矩形的,它们按照Z-order进行 ...
- [Jenkins]执行SoapUI脚本,怎样在邮件内容里面嵌入html
在Editable Email Notification的Default Content里面加入这样一段: ${FILE,path="result-output/overview-summa ...
- abp CrudAppService 自定义分页、排序
public class GetAllTasksInput : PagedAndSortedResultRequestDto { public TaskState? State { get; set; ...
- 深入浅出NetWorking
技术屌丝也是需要学习网络基本知识的,本书用一种轻松的方式讲了最基本的网络概念和硬件.协议,看完此书,就可以学习<TCP/IP协议>,学完后从此网络再无战事了. 1.网线分为:双绞线,同轴电 ...
- 共享keychain数据
[共享keychain数据] 当往keychain中插入数据时,默认的 kSecAttrAccessGroup 就是App自身的BundleID. [官方文档] You can add a keych ...
- zz如何让你的婚姻天长地久?
如果天长地久意味着一列永不出轨的火车,下面有关婚姻生活的战略就像制定一张准确的运行时刻表.因为成功的婚姻并非源于机运,所谓的七年之痒也不是空穴来风.对那些已婚男人来说,他们需要计划——为了一年比一年过 ...