Update Gem to Work on Rails 5 and 6

February 1, 2021

I've had to update some gems to run on both Rails 5 and 6. Some apps are still on Rails 5 and new apps are being built on Rails 6 that need the same functionality. These are the steps I took. No guarantee this will work for all gems, but it worked for the 3 I've updated.

In the gemfile, add an option to specify the version of Rails to use. Also, make sure Rails is part of the gemfile.


                    rails_version = ENV["RAILS_VERSION"] || "default"

                    rails = case rails_version
                    when "master"
                    {github: "rails/rails"}
                    when "default"
                    ">= 5.2.4.3"
                    else
                    "~> #{rails_version}"
                    end

                    gem "rails", rails
                

In the gemspec file, modify the version of rails allowed


                    s.add_dependency "rails", ">= 5.0", '< 7.0'

If the gem has a config/application.rb file, modify the Rails version


                    config.load_defaults Rails::VERSION::STRING.to_f
                

If Travis CI is being used, add the 2 versions under env in .travis.yml so tests are run on both versions


                    env:
                        - "RAILS_VERSION=5.2.4.3"
                        - "RAILS_VERSION=6.0.3"
                

Run the gem's tests with a specific Rails version


                        RAILS_VERSION=6.1.1 bundle exec rake