Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
No one likes working on Rails upgrades, and who can blame them? They can be thankless, time-consuming, and—worst of all—unpredictable. How long will they take? When can we get back to feature work? What’ll break when they’re deployed? It’s tempting to say, “Let’s do it later,” but later is usually never. Instead of living in fear of the big, scary Rails upgrade, your team can set up systems for incremental change that let you: * continue feature work * deliver predictable results * seamlessly jump into the next upgrade (because there’s always a next upgrade) And I’m gonna show you how. In the years since I’ve worked on upgrading Rails at GitHub, I’ve refined this approach to Rails upgrades and successfully implemented it at several organizations. In this talk, you’ll learn everything you need to burn down uncertainty and boldly go into your next Rails upgrade.
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
# Zero Downtime Rails Upgrades In this insightful talk presented at RailsConf 2023 by Ali Ibrahim, the focus is on overcoming the challenges associated with upgrading Ruby on Rails applications. The speaker outlines a strategy to streamline the upgrade process, allowing developers to manage it with minimal disruption to feature work. ## Key Points Discussed: - **The Complexity of Rails Upgrades**: The speaker reflects on the common challenges organizations face during Rails upgrades, which often stem from a lack of shared understanding among team members regarding the Rails codebase. Unlike predictable feature work, upgrades are fraught with uncertainty and risk due to Rails' extensive and complex code. - **Reframing Upgrades as Incremental Work**: To address the complexity, Ali proposes reframing upgrades to mirror incremental feature work. This involves breaking the upgrade into smaller, manageable tasks that can be addressed one at a time, easing the overall process. - **Version Targeting**: The upgrade should start by identifying the immediate next minor version to target, allowing teams to implement changes progressively rather than tackling multiple updates simultaneously, which can be overwhelming and risky. - **Managing Deprecation Warnings**: Ali emphasizes the importance of addressing deprecation warnings early in the upgrade process. By fixing these incrementally throughout the application, teams can better prepare for future Rails versions without delaying the entire upgrade. - **Dual Booting Strategy**: A key technique presented is the dual booting method, which allows an application to run on both the current and target versions of Rails simultaneously. This permits continuous integration of features and minimizes the risks associated with long-lived branches during the upgrade process. - **Backporting New Features**: The advantage of backporting new features to support older versions of Rails is discussed. This enables teams to adopt new coding patterns ahead of the upgrade, easing the transition to newer versions. - **Managing Test Failures**: When faced with numerous test failures, the speaker suggests grouping these failures by reason, allowing teams to address them more systematically and efficiently. - **Testing in Production-like Environments**: Before fully committing to the upgrade, conducting small experiments in environments that mimic production can help assess stability and identify remaining issues without significant risk. ## Conclusion and Takeaways: By refining the upgrade process through incremental changes, addressing deprecations proactively, utilizing dual booting, and continuously integrating new features, teams can make Rails upgrades predictable and repeatable. The overarching message is to embrace the learning curve with each upgrade to build a robust process for future upgrades, ultimately leading to zero downtime during the process. Sharing experiences and insights learned during each upgrade can further benefit the Rails community, fostering a collaborative environment for tackling these common challenges.
Suggest modifications
Cancel