From 5d430eb0e902c4241356e638e6b0b693f198bd7c Mon Sep 17 00:00:00 2001 From: Mattia Giuffrida Date: Thu, 6 Jan 2022 17:18:48 +0000 Subject: [PATCH] Re-add support for Ruby 2.4+ --- .github/workflows/ci.yml | 2 +- .rubocop.yml | 2 +- faraday.gemspec | 2 +- spec/faraday/request/instrumentation_spec.rb | 12 +++++++----- spec/support/webmock_rack_app.rb | 3 ++- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 737d27833..72939169e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,7 +42,7 @@ jobs: strategy: fail-fast: false matrix: - ruby: ['2.6', '2.7', '3.0', '3.1'] + ruby: ['2.4', '2.5', '2.6', '2.7', '3.0', '3.1'] steps: - uses: actions/checkout@v1 diff --git a/.rubocop.yml b/.rubocop.yml index 404995251..f5ccbfa9e 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -8,7 +8,7 @@ require: AllCops: DisplayCopNames: true DisplayStyleGuide: true - TargetRubyVersion: 2.6 + TargetRubyVersion: 2.4 Inclusivity/Race: Enabled: true diff --git a/faraday.gemspec b/faraday.gemspec index c587393d8..5134fc9a3 100644 --- a/faraday.gemspec +++ b/faraday.gemspec @@ -13,7 +13,7 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength spec.homepage = 'https://lostisland.github.io/faraday' spec.licenses = ['MIT'] - spec.required_ruby_version = '>= 2.6' + spec.required_ruby_version = '>= 2.4' spec.add_dependency 'faraday-em_http', '~> 1.0' spec.add_dependency 'faraday-em_synchrony', '~> 1.0' diff --git a/spec/faraday/request/instrumentation_spec.rb b/spec/faraday/request/instrumentation_spec.rb index d207c5568..f8af4c4f5 100644 --- a/spec/faraday/request/instrumentation_spec.rb +++ b/spec/faraday/request/instrumentation_spec.rb @@ -30,11 +30,13 @@ def instrument(name, env) it { expect(options.name).to eq('request.faraday') } it 'defaults to ActiveSupport::Notifications' do - res = options.instrumenter - rescue NameError => e - expect(e.to_s).to match('ActiveSupport') - else - expect(res).to eq(ActiveSupport::Notifications) + begin + res = options.instrumenter + rescue NameError => e + expect(e.to_s).to match('ActiveSupport') + else + expect(res).to eq(ActiveSupport::Notifications) + end end it 'instruments with default name' do diff --git a/spec/support/webmock_rack_app.rb b/spec/support/webmock_rack_app.rb index d69a9cdcd..a3212c71c 100644 --- a/spec/support/webmock_rack_app.rb +++ b/spec/support/webmock_rack_app.rb @@ -41,7 +41,8 @@ def req_uri(env) def req_headers(env) http_headers = env.select { |k, _| k.start_with?('HTTP_') } - .transform_keys { |k| k[5..] } + .map { |k, v| [k[5..-1], v] } + .to_h special_headers = Faraday::Adapter::Rack::SPECIAL_HEADERS http_headers.merge(env.select { |k, _| special_headers.include?(k) })