Slide 1

Slide 1 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Upgrade Rails 101 The Roadmap to Smooth Upgrades RailsConf 2019

Slide 2

Slide 2 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Who is this workshop for? 2

Slide 3

Slide 3 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Workshop Outline 3

Slide 4

Slide 4 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Goal: The Upgrade Roadmap 4

Slide 5

Slide 5 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade fastruby.io/ upgrade 5

Slide 6

Slide 6 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade #RailsUpgrades 6

Slide 7

Slide 7 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Ernesto Tagwerker (he/him)

Slide 8

Slide 8 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Thanks to my main sponsor!

Slide 9

Slide 9 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Thanks to my main sponsor!

Slide 10

Slide 10 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Founder & Software Engineer at Ombu Labs

Slide 11

Slide 11 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Founder & Software Engineer at FastRuby.io

Slide 12

Slide 12 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade - “Upgrading Rails is easy, right?” - “Right, right, easy…”

Slide 13

Slide 13 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Questions are welcome

Slide 14

Slide 14 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Pre-Requisites

Slide 15

Slide 15 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade An outdated Rails application

Slide 16

Slide 16 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 16 $ bundle install

Slide 17

Slide 17 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 17 $ bundle exec rake

Slide 18

Slide 18 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 18 $ bundle exec rspec

Slide 19

Slide 19 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 19 $ bundle exec rake test

Slide 20

Slide 20 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade If you don’t have an outdated Rails app…

Slide 21

Slide 21 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 21 $ git clone \ [email protected]:fastruby/e-petitions.git

Slide 22

Slide 22 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 22 $ cd e-petitions $ ./bin/setup

Slide 23

Slide 23 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Questions?

Slide 24

Slide 24 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Exercise #1: Check Pre-Requisites Time: 10 minutes https://fastruby.io/upgrade#1 https://fastruby.io/upgrade#2 https://fastruby.io/upgrade#3

Slide 25

Slide 25 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Is your app ready for an upgrade?

Slide 26

Slide 26 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade bundle update rails ?

Slide 27

Slide 27 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Does your test suite succeed? 27

Slide 28

Slide 28 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Does your app have decent test coverage? 28

Slide 29

Slide 29 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Exercise #2: Calculate Test Coverage

Slide 30

Slide 30 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade SimpleCov 30

Slide 31

Slide 31 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 31 # Gemfile group :test do gem 'simplecov', require: false end

Slide 32

Slide 32 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 32 # spec/spec_helper.rb if ENV['COVERAGE'] == 'true' require 'simplecov' SimpleCov.start 'rails' end

Slide 33

Slide 33 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 33 $ COVERAGE=true bundle exec rake

Slide 34

Slide 34 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Questions?

Slide 35

Slide 35 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 35 Exercise #2: Check Test Coverage Time: 15 minutes https://fastruby.io/upgrade#4

Slide 36

Slide 36 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Is upgrading a good idea?

Slide 37

Slide 37 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Upgrading is always a good idea 37

Slide 38

Slide 38 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Let’s assume your application is well covered 38

Slide 39

Slide 39 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Trust The Process

Slide 40

Slide 40 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Gradual version jumps 40

Slide 41

Slide 41 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade ... ✅ 2.3 3.0 ✅ 3.0 3.1 ✅ 3.1 3.2 ✅ 3.2 4.0 ✅ 4.0 4.1 ✅ 4.1 4.2 ✅ 4.2 5.0 ✅ 5.0 5.1 ✅ 5.1 5.2 ✅ 5.2 6.0 41 Gemfile Gemfile.next { }

Slide 42

Slide 42 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade For every version jump: bundle install bundle exec rake Smoke test 42

Slide 43

Slide 43 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Ship backwards-compatible changes first 43

Slide 44

Slide 44 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Every deprecation warning is a story 44

Slide 45

Slide 45 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Every failing scenario is a story 45

Slide 46

Slide 46 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Tiny Pull Requests over One Huge PR 46

Slide 47

Slide 47 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Tiny Changesets over Huge Changesets 47

Slide 48

Slide 48 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 1. Tweak 2. Test 3. Merge And Iterate

Slide 49

Slide 49 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade The Version Jump Pull Request is Last 49

Slide 50

Slide 50 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Pessimistic Dependencies Checkup

Slide 51

Slide 51 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade SemVer 51

Slide 52

Slide 52 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade .. 52

Slide 53

Slide 53 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade

Slide 54

Slide 54 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Rails 5.2.3 MAJOR: 5 MINOR: 2 PATCH: 3 54

Slide 55

Slide 55 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Dependencies should be pessimistic* 55

Slide 56

Slide 56 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 56 # Gemfile (fixed version) source 'https://rubygems.org' gem 'rails', '4.2.7'

Slide 57

Slide 57 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 57 $ bundle update $ cat Gemfile.lock | grep rails rails (4.2.7)

Slide 58

Slide 58 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 58 # Gemfile (pessimistic versions) source 'https://rubygems.org' gem 'rails', '~> 4.2.7'

Slide 59

Slide 59 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 59 $ bundle update $ cat Gemfile.lock | grep rails rails (4.2.11.1)

Slide 60

Slide 60 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Exercise #3: Relax your Gemfile

Slide 61

Slide 61 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Analyze your Gemfile 61

Slide 62

Slide 62 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 62 $ bundle outdated Fetching gem metadata from https://rubygems.org/. Resolving dependencies..... Outdated gems included in the bundle: * actioncable (newest 5.2.3, installed 5.1.6) * actionmailer (newest 5.2.3, installed 5.1.6) * actionpack (newest 5.2.3, installed 5.1.6) * actionview (newest 5.2.3, installed 5.1.6) ...

Slide 63

Slide 63 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade For every fixed dependency declaration: - Turn it into a pessimistic declaration 63

Slide 64

Slide 64 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade For every fixed dependency declaration: 64 $ bundle update

Slide 65

Slide 65 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade For every fixed dependency declaration: 65 $ bundle exec rake

Slide 66

Slide 66 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Does your build pass? - Submit a PR - Create a story 66 … and move on to the next fixed dependency

Slide 67

Slide 67 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Remember: One at a time 67

Slide 68

Slide 68 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Questions?

Slide 69

Slide 69 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 69 Exercise #3: Relax your Gemfile Time: 10 minutes https://fastruby.io/upgrade#5

Slide 70

Slide 70 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade What happened? 70

Slide 71

Slide 71 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Dual Boot: Bundle Install

Slide 72

Slide 72 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Let’s bump that Rails version 72

Slide 73

Slide 73 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Dual boot: There are many gems for that 73

Slide 74

Slide 74 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 74 # Gemfile group :development do gem "ten_years_rails", git: "https://github.com/fastruby/ten_years_rails_conf_2018.git", branch: "fixes/ruby-2-2-syntax-error" end

Slide 75

Slide 75 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 75 $ bundle install

Slide 76

Slide 76 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 76 $ bundle_report outdated cucumber-rails 1.4.0: released over 5 years ago (latest version, 1.7.0, released 11 days ago) rack-test 0.6.3: released over 4 years ago (latest version, 1.1.0, released 9 months ago) cucumber-wire 0.0.1: released over 3 years ago (latest version, 1.0.0, released 7 months ago) cucumber-core 1.5.0: released almost 3 years ago (latest version, 4.0.0, released 7 months ago) cucumber 2.4.0: released almost 3 years ago (latest version, 3.1.2, released 10 months ago) arel 6.0.4: released over 2 years ago (latest version, 9.0.0, released over 1 year ago) ... ... ... 35 of the 143 gems are out-of-date (24%)

Slide 77

Slide 77 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 77 $ bundle_report compatibility --rails-version=6.0.0.rc1 => Incompatible with Rails 6.0.0.rc1 (with new versions that ar compatible): These gems will need to be upgraded before upgrading to Rails 6.0.0.rc1. rails-controller-testing 1.0.2 - upgrade to 1.0.4 responders 2.4.0 - upgrade to 2.4.1 2 gems incompatible with Rails 6.0.0.rc1 (this is for an app running Rails 5.1.4)

Slide 78

Slide 78 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 78 $ next --init Created Gemfile.next (a symlink to your Gemfile). Your Gemfile has been modified to support dual-booting! There's just one more step: modify your Gemfile to use a newer version of Rails using the `next?` helper method. For example, here's how to go from 5.2.3 to 6.0: if next? gem "rails", "6.0.0" else gem "rails", "5.2.3" end

Slide 79

Slide 79 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 79 # Gemfile def next? File.basename(__FILE__) == "Gemfile.next" end source 'https://rubygems.org' gem 'rails', '~> 5.1.4’

Slide 80

Slide 80 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 80 # Gemfile if next? gem 'rails', '~> 5.2.3' else gem 'rails', '~> 5.1.4' end

Slide 81

Slide 81 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 81 $ next bundle install

Slide 82

Slide 82 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 82 $ BUNDLE_GEMFILE=Gemfile.next \ bundle install

Slide 83

Slide 83 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Incompatibilities 83

Slide 84

Slide 84 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 84 $ BUNDLE_GEMFILE=Gemfile.next \ bundle install Bundler could not find compatible versions for gem "activesupport": In snapshot (Gemfile.lock): activesupport (= 4.2.1) In Gemfile: activeadmin was resolved to 1.0.0.pre4, which depends on arbre (>= 1.0.2, ~> 1.0) was resolved to 1.1.1, which depends on activesupport (>= 3.0.0) activeadmin was resolved to 1.0.0.pre4, which depends on inherited_resources (~> 1.6) was resolved to 1.7.0, which depends on .

Slide 85

Slide 85 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Try to fix incompatibilities 85

Slide 86

Slide 86 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade #DownTheRabbitHole

Slide 87

Slide 87 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade You might have to remove dependencies, create user stories, and move on 87

Slide 88

Slide 88 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 88 Exercise #4: next bundle install Time: 15 minutes https://fastruby.io/upgrade#6

Slide 89

Slide 89 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Dual Boot: Test Suite

Slide 90

Slide 90 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Assuming you can now next bundle install successfully... 90

Slide 91

Slide 91 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 91 # On Rails > 4.2 $ next bundle exec rake app:update

Slide 92

Slide 92 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 92 # On Rails <= 4.2 $ next bundle exec rake rails:update

Slide 93

Slide 93 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 93 $ next bundle exec rake

Slide 94

Slide 94 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Failures 94

Slide 95

Slide 95 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 95 $ BUNDLE_GEMFILE=Gemfile.next \ bundle exec rake rake aborted! Bundler::GemRequireError: There was an error while trying to load the gem 'test_after_commit'. Gem Load Error is: after_commit testing is baked into rails 5, you no longer need test_after_commit gem Backtrace for gem load error is: /Users/etagwerker/.rvm/gems/ruby-2.4.5@petitions/gems/ test_after_commit-1.1.0/lib/test_after_commit.rb:4:in `' /Users/etagwerker/.rvm/rubies/ruby-2.4.5/lib/ruby/site_ruby/2.4.0/ bundler/runtime.rb:81:in `require' /Users/etagwerker/.rvm/rubies/ruby-2.4.5/lib/ruby/site_ruby/2.4.0/ bundler/runtime.rb:81:in `block (2 levels) in require' /Users/etagwerker/.rvm/rubies/ruby-2.4.5/lib/ruby/site_ruby/2.4.0/ bundler/runtime.rb:76:in `each'

Slide 96

Slide 96 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 96 # Gemfile group :test do gem 'nokogiri' gem 'shoulda-matchers' gem ‘pickle' unless next? gem ‘test_after_commit' end end

Slide 97

Slide 97 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 97 $ BUNDLE_GEMFILE=Gemfile.next \ bundle exec rake NoMethodError: undefined method `hide_action' for Delayed::Web::ApplicationController:Class # ./config/initializers/delayed_web.rb:10:in `block in ' # ./config/initializers/delayed_web.rb:7:in `class_eval' # ./config/initializers/delayed_web.rb:7:in `' # /Users/etagwerker/.rvm/gems/ruby-2.4.5@petitions/gems/ activesupport-5.0.7.2/lib/active_support/dependencies.rb:287:in `load' # /Users/etagwerker/.rvm/gems/ruby-2.4.5@petitions/gems/ activesupport-5.0.7.2/lib/active_support/dependencies.rb:287:in `block in load' # /Users/etagwerker/.rvm/gems/ruby-2.4.5@petitions/gems/ activesupport-5.0.7.2/lib/active_support/dependencies.rb:259:in `load_dependency'

Slide 98

Slide 98 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 98 # config/initializers/delayed_web.rb Delayed::Web::ApplicationController.class_eval do include Authentication, FlashI18n hide_action :admin_request? def admin_request? true end protected def admin_login_url main_app.admin_login_url end end

Slide 99

Slide 99 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 99 # config/initializers/delayed_web.rb Delayed::Web::ApplicationController.class_eval do include Authentication, FlashI18n protected def admin_request? true end def admin_login_url main_app.admin_login_url end end

Slide 100

Slide 100 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Deprecation Warnings 100

Slide 101

Slide 101 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 101 $ BUNDLE_GEMFILE=Gemfile.next bundle exec rake DEPRECATION WARNING: The success? predicate is deprecated and will be removed in Rails 6.0. Please use successful? as provided by Rack::Response::Helpers. (called from block (3 levels) in at /Users/etagwerker/Projects/ ombulabs/fastruby.io/spec/controllers/ contacts_controller_spec.rb:20) .DEPRECATION WARNING: The success? predicate is deprecated and will be removed in Rails 6.0. Please use successful? as provided by Rack::Response::Helpers. (called from block (4 levels) in at /Users/etagwerker/Projects/ ombulabs/fastruby.io/spec/controllers/ contacts_controller_spec.rb:32) ..DEPRECATION WARNING: The success? predicate is deprecated and will be removed in Rails 6.0. Please use successful? as provided by Rack::Response::Helpers. (called from block (4 levels) in at /Users/etagwerker/Projects/ ombulabs/fastruby.io/spec/controllers/ contacts_controller_spec.rb:52) ..........

Slide 102

Slide 102 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Find References To Deprecated API

Slide 103

Slide 103 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade https://edgeguides.rubyonrails.org/ upgrading_ruby_on_rails.html Official Guides

Slide 104

Slide 104 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Unofficial Guides 104 1.https://fastruby.io/blog/rails/upgrades/upgrade-to-rails-3.html 2.https://fastruby.io/blog/rails/upgrades/upgrade-to-rails-3-1.html 3.https://fastruby.io/blog/rails/upgrades/upgrade-to-rails-3-2.html 4.https://fastruby.io/blog/rails/upgrades/upgrade-rails-from-3-2-to-4-0.html 5.https://fastruby.io/blog/rails/upgrades/upgrade-rails-from-4-0-to-4-1.html 6.https://fastruby.io/blog/rails/upgrades/upgrade-rails-from-4-1-to-4-2.html 7.https://fastruby.io/blog/rails/upgrades/active-record-5-1-api-changes.html 8.https://fastruby.io/blog/rails/upgrades/upgrade-rails-from-4-2-to-5-0.html 9.https://fastruby.io/blog/rails/upgrades/upgrade-rails-from-5-0-to-5-1.html 10.https://fastruby.io/blog/rails/upgrades/upgrade-rails-from-5-1-to-5-2.html 11.https://fastruby.io/blog/rails/upgrades/upgrade-rails-from-5-2-to-6-0.html

Slide 105

Slide 105 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade http://railsdiff.org/ RailsDiff

Slide 106

Slide 106 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Find In Project 106

Slide 107

Slide 107 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 107 Exercise #5: next bundle exec rake Time: 15 minutes https://fastruby.io/upgrade#7

Slide 108

Slide 108 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade What happened? 108

Slide 109

Slide 109 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade How To Stay Current How To Stay Current

Slide 110

Slide 110 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Treat new deprecation warnings as exceptions 110

Slide 111

Slide 111 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade # config/environments/test.rb Rails.application.configure do # ... # Raise on deprecation notices config.active_support.deprecation = :raise # ... end 111

Slide 112

Slide 112 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Add bundler-audit to your default rake task 112

Slide 113

Slide 113 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade # Rakefile # ... task default: %i[ bundle:audit brakeman:check spec spec:javascripts cucumber ] 113

Slide 114

Slide 114 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade namespace :bundle do desc "Audit bundle for any known vulnerabilities" task :audit do unless system "bundle-audit check --update" exit 1 end end end 114

Slide 115

Slide 115 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Keep up with the upcoming releases 115

Slide 116

Slide 116 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 116 # Gemfile source 'https://rubygems.org' git_source(:github) do |repo_name| repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") "https://github.com/#{repo_name}.git" end if next? gem 'rails', github: 'rails/rails' else gem 'rails', '~> 6.0.0.rc1' end

Slide 117

Slide 117 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 117 Exercise #6: Set Up to Stay Current Time: 5 minutes https://fastruby.io/upgrade#8

Slide 118

Slide 118 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade @etagwerker #RailsUpgrades fastruby.io Feedback is welcome

Slide 119

Slide 119 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade 119 Thank You!

Slide 120

Slide 120 text

@etagwerker | #RailsUpgrades | https://fastruby.io/upgrade Resources 120 1.https://github.com/clio/ten_years_rails 2.https://github.com/alphagov/e-petitions 3.https://github.com/rubyperu/ready4rails 4.https://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#the-upgrade-process 5.https://fastruby.io/blog/tags/upgrades 6.https://semver.org 7.https://github.com/Shopify/bootboot 8.https://github.com/fastruby/rails_upgrader 9.http://railsdiff.org 10.https://github.com/hintmedia/moderate_parameters 11.https://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#the-update-task