Upgrading GitHub to Ruby 2.7
summary
GitHub upgrades from Ruby 2.6 to 2.7 by fixing over 11k+ warnings, patching 15+ gems, upgrading 30+ gems, and replacing abandoned libraries; a custom monkey patch for Warning records full stack traces and emits machine-friendly artifacts; a raise_on_warnings mode fails CI on new deprecations; teams use dual-booting via ruby-next to test both versions, fan out issues by code owner, and deploy incrementally (2% → 20% → 100%), gaining ~20s boot and ~112k fewer boot-time allocations.
AI-written summary · about
chapters (22)
- 0:00Start
- 3:54Why was this Ruby upgrade hard?
- 4:29Running GitHub Deprecation Free
- 5:52DEPRECATION: Separation of positional and keyword arguments
- 10:54DEPRECATION: URI method deprecations
- 12:54UPGRADING: Dual-booting our application
- 14:04UPGRADING: Monkey patch Warning module
- 17:48UPGRADING: Fixing warnings in gems
- 19:05Replace abandoned gems
- 19:43Preventing regressions
- 20:10Our Deploy Process
- 20:47DEPLOYING: Make smaller change sets
- 21:26DEPLOYING: Testing on staging
- 22:06DEPLOYING: Slow & incremental rollout
- 24:05DEPLOYING: Strive for boring deploys
- 24:28Features Worth Upgrading For
- 26:09FEATURE: IRB Improvements
- 26:45FEATURE: Manual GC Compaction
- 27:20Making Ruby (Even) Better
- 27:42If you don't like how Ruby works, change it.
- 28:30UPSTREAM FIX: Warning categories
- 29:58Nothing makes an upgrade harder than waiting
related talks
38mThe Past, Present, and Future of Rails at GitHub
48mRuby & You
35mTen years of Rails upgrades
42mThe Past, Present, and Future of Rails at GitHub
38mThe Past, Present and Future of Rails at GitHub
36mRuby & Rails Versioning at Scale
36mRuby & Rails Versioning at Scale
40mThe Past, Present, and Future of Rails at GitHub
