Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby on Ice 2019: The Past, Present and Future ...

Ruby on Ice 2019: The Past, Present and Future of Rails at GitHub

On August 15, 2018 GitHub was deployed to production running Rails 5.2. This was a historic event; for years GitHub had been behind Rails and dependent on a custom fork of Rails 2.3. This talk will visit GitHub's past, including our tumultuous relationship with the Rails framework, and the grueling effort it took to get our application on the latest version. You’ll learn what mistakes to avoid and the reasons why such a difficult upgrade was worth it. We’ll explore what tracking master means for the future and establish that GitHub and Rails are in it together for the long haul.

Eileen M. Uchitelle

February 22, 2019
Tweet

More Decks by Eileen M. Uchitelle

Other Decks in Programming

Transcript

  1. 2005 2006 2007 2004 Rails is born GitHub is born

    GitHub launches 2008 Rails 1.2 Rails 1.0
  2. 2005 2006 2007 2004 Rails is born 2008 GitHub is

    born Rails 1.2 GitHub launches Rails joins Rails 1.0
  3. 2006 2007 2008 2005 2009 GitHub is born Rails 1.2

    GitHub launches Rails joins Rails 2.3 Rails 1.0
  4. GitHub is born GitHub launches Rails 1.2 Rails joins Rails

    2.3 2007 2008 2009 2006 2010 Fork Rails
  5. GitHub is born GitHub launches Rails 1.2 Rails joins Rails

    2.3 2007 2008 2009 2006 2010 Fork Rails
  6. GitHub is born GitHub launches Rails 1.2 Rails joins Rails

    2.3 2007 2008 2009 2006 2010 Rails 3.0 Fork Rails
  7. GitHub is born GitHub launches Rails 1.2 Rails joins Rails

    2.3 2007 2008 2009 2010 Rails 3.0 Fork Rails 2011 Start 3.0 upgrade
  8. GitHub launches Rails joins Rails 2.3 2008 2009 2010 Rails

    3.0 Fork Rals 2011 Start 3.0 upgrade 2012 Rails 3.2
  9. GitHub launches Rails joins Rails 2.3 2008 2009 2010 Rails

    3.0 GH forks Rails 2011 Start 3.0 upgrade 2012 Rails 3.2 Upgrade stalled
  10. Why upgrade when this version isn’t causing us pain? Why

    upgrade when Rails 3 is slower? Why upgrade when our fork is better?
  11. 2010 Rails 3.0 2011 Start 3.0 upgrade 2013 Rails 3.2

    Upgrade stalled 2012 Complete 3.0 2014 Rails 4.0
  12. 2013 Rails 3.2 Upgrade stalled 2012 2014 2015 Complete 3.0

    2016 4.0 started Rails 5.0 Rails 4.0
  13. Gemfile.lock (Rails 3.2) $ rails server $ rails test tests/models/issue_test.rb

    Multiple Rails Versions Gemfile_rails4.lock (Rails 4.0) $ RAILS4=1 rails server $ RAILS4=1 rails test tests/models/issue_test.rb
  14. Gemfile_rails4.lock (Rails 4.0) $ RAILS4=1 rails server $ RAILS4=1 rails

    test tests/models/issue_test.rb Multiple Rails Versions Gemfile_rails41.lock (Rails 4.1) $ RAILS41=1 rails server $ RAILS41=1 rails test tests/models/issue_test.rb
  15. Conditional Code if GitHub.rails_3_2? # code for Rails 3.2 elsif

    GitHub.rails_4_0? # code for Rails 4.0 else # code for all future versions end
  16. …the stories of upgrading being a huge undertaking always makes

    me scratch my head - what are we doing wrong if its easy for us. - HN troll “ ”