diff --git a/.travis.yml b/.travis.yml index dafe4cebf1..02e104b4bd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -75,6 +75,11 @@ matrix: env: RAILS_VERSION='~> 5.2.0' - rvm: 2.3.8 env: RAILS_VERSION='~> 5.2.0' + - rvm: 2.2.10 + env: RAILS_VERSION='~> 5.2.0' + allow_failure: true + - rvm: 2.2.10 + env: RAILS_VERSION='5-2-stable' # Rails 5.1 Builds >= 2.2.2 - rvm: 2.6.6 @@ -85,6 +90,8 @@ matrix: env: RAILS_VERSION='~> 5.1.0' - rvm: 2.3.8 env: RAILS_VERSION='~> 5.1.0' + - rvm: 2.2.10 + env: RAILS_VERSION='~> 5.1.0' # Rails 5.0 Builds >= 2.2.2 - rvm: 2.6.6 @@ -95,5 +102,7 @@ matrix: env: RAILS_VERSION='~> 5.0.0' - rvm: 2.3.8 env: RAILS_VERSION='~> 5.0.0' + - rvm: 2.2.10 + env: RAILS_VERSION='~> 5.0.0' fast_finish: true diff --git a/Gemfile b/Gemfile index 07d5f4c98d..ac7c392be7 100644 --- a/Gemfile +++ b/Gemfile @@ -22,6 +22,9 @@ case RAILS_VERSION when /master/ MAJOR = 6 MINOR = 0 +when /5-2-stable/ + MAJOR = 5 + MINOR = 2 when /stable/ MAJOR = 6 MINOR = 0 @@ -46,7 +49,11 @@ gem 'rake', '~> 12' gem 'mime-types', "~> 3" -gem 'capybara', '>= 2.13', '< 4.0', require: false +if RUBY_VERSION.to_f == 2.2 + gem 'capybara', '~> 3.1.0' +else + gem 'capybara', '>= 2.13', '< 4.0', require: false +end if MAJOR < 6 gem 'nokogiri', '1.9.1' @@ -56,7 +63,9 @@ end gem "rubyzip", '~> 1.2' -gem 'rubocop', '~> 0.80.1' +if RUBY_VERSION.to_f >= 2.3 + gem 'rubocop', '~> 0.80.1' +end custom_gemfile = File.expand_path('Gemfile-custom', __dir__) eval_gemfile custom_gemfile if File.exist?(custom_gemfile) diff --git a/example_app_generator/generate_app.rb b/example_app_generator/generate_app.rb index b1f16d7d52..a69d856eac 100644 --- a/example_app_generator/generate_app.rb +++ b/example_app_generator/generate_app.rb @@ -36,7 +36,9 @@ end if Rails::VERSION::STRING >= "5.1.0" - if RUBY_VERSION < "2.4" + if RUBY_VERSION < "2.3" + gsub_file "Gemfile", /.*capybara.*/, "gem 'capybara', '~> 3.1.0'" + elsif RUBY_VERSION < "2.4" gsub_file "Gemfile", /.*capybara.*/, "gem 'capybara', '~> 3.15.0'" end if Rails::VERSION::STRING >= "5.2.0" diff --git a/lib/rspec/rails/example/mailer_example_group.rb b/lib/rspec/rails/example/mailer_example_group.rb index 874c773cf7..fd86fe9427 100644 --- a/lib/rspec/rails/example/mailer_example_group.rb +++ b/lib/rspec/rails/example/mailer_example_group.rb @@ -21,8 +21,8 @@ module MailerExampleGroup included do include ::Rails.application.routes.url_helpers - options = ::Rails.configuration.action_mailer.default_url_options - options&.each { |key, value| default_url_options[key] = value } + options = ::Rails.configuration.action_mailer.default_url_options || {} + options.each { |key, value| default_url_options[key] = value } end # Class-level DSL for mailer specs. diff --git a/script/update_rubygems_and_install_bundler b/script/update_rubygems_and_install_bundler index c5372151e4..2ecbbf294a 100755 --- a/script/update_rubygems_and_install_bundler +++ b/script/update_rubygems_and_install_bundler @@ -5,5 +5,11 @@ set -e source script/functions.sh -gem update --no-document --system -gem install --no-document bundler +if is_ruby_23_plus; then + gem update --no-document --system + gem install --no-document bundler +else + echo "Warning installing older versions of Rubygems / Bundler" + gem update --system '2.7.8' + gem install bundler -v '1.17.3' +fi diff --git a/spec/rspec/rails/example/view_example_group_spec.rb b/spec/rspec/rails/example/view_example_group_spec.rb index 3ca3c93976..87edd4ef25 100644 --- a/spec/rspec/rails/example/view_example_group_spec.rb +++ b/spec/rspec/rails/example/view_example_group_spec.rb @@ -236,7 +236,18 @@ def _view; end # Stub method expect(view_spec.view).to eq(view) end - it 'is accessible to hooks' do + if RUBY_VERSION <= "2.3.0" && ::Rails.version.to_f == 5.2 + pending_only_on_ruby_22_rails_52 = """ + Rails 5.2.4.2 has a syntax error in ActionDispatch::Request::Session. + (A &. usage which does not work in 2.2.10) + It has been fixed but not released, this spec will not pass until that + has been released. + """ + else + pending_only_on_ruby_22_rails_52 = false + end + + it 'is accessible to hooks', pending: pending_only_on_ruby_22_rails_52 do with_isolated_config do run_count = 0 RSpec.configuration.before(:each, type: :view) do