RailsConf 2024 - Ruby & Rails Versioning at Scale by George Ma

Learn how Shopify simplified the Rails upgrade process at scale, reducing the risk of errors, improving security, and streamlining app maintenance, and discover tools and strategies to make upgrades smoother and more efficient.

Key takeaways
  • Psychologically, upgrades can be terrifying due to potential bugs, security risks, and performance issues, making it a challenge to upgrade without hesitation.
  • At Shopify, they realized that the upgrade process needs to be simplified to make it easier and less intimidating for developers.
  • Creating an automated upgrade process helps reduce the chance of human error and reduces the need for manual testing.
  • The Rails upgrade process is complex and involves multiple steps, making it difficult to upgrade at scale.
  • The most common mistake when upgrading Rails is skipping minor versions, which can cause issues and create more work.
  • Simplifying the upgrade process enables timely upgrades, reduces learning curve, and improves onboarding for new developers.
  • Automating upgrades helps reduce potential risks and makes it easier to ensure app security and stability.
  • Introducing an upgrade schedule can help developers stay up-to-date, prevent mistakes, and make it easier to maintain apps.
  • It’s important to standardize Ruby definitions to reduce duplication and inconsistencies.
  • Ruby versions were defined in multiple places at Shopify, causing issues during upgrades.
  • Dependabot and RuboCop can help simplify the upgrade process by automatically updating dependencies and detecting deprecated code.
  • Introducing an upgrade calendar can help teams prepare for upgrades and reduce uncertainty.
  • The Rails upgrade process involves multiple steps, including disallowing deprecation, autocorrecting deprecations, and running the bin rails app update task.
  • It’s important to ensure app security and stability by testing and reviewing code updates.
  • Automating upgrades can help reduce the risk of potential runtime errors and security vulnerabilities.
  • Introducing an upgrade schedule can help developers stay up-to-date and reduce the likelihood of missed upgrades.
  • Simplifying the upgrade process can help reduce the learning curve for new developers.
  • Standardizing Ruby definitions can help reduce duplication and inconsistencies.
  • The Rails upgrade process can be automated using tools like Rails Upgrade and SolidTrack.