Skip to content

Commit ce6f003

Browse files
authored
Merge pull request #155 from pact-foundation/revertrevert
fix: Rack 3 support
2 parents 9bfdd03 + f6b1869 commit ce6f003

File tree

7 files changed

+25
-8
lines changed

7 files changed

+25
-8
lines changed

.github/workflows/test.yml

+3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ jobs:
99
matrix:
1010
ruby_version: ["2.7", "3.0", "3.1", "3.2", "3.3"]
1111
os: ["ubuntu-latest","windows-latest","macos-latest"]
12+
rack_version: ["2", "3"]
1213
runs-on: ${{ matrix.os }}
14+
env:
15+
RACK_VERSION: ${{ matrix.rack_version }}
1316
steps:
1417
- uses: actions/checkout@v4
1518
- uses: ruby/setup-ruby@v1

lib/pact/consumer/mock_service/rack_request_helper.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def request_as_hash_from env
2424
end
2525

2626
request[:headers] = headers_from env
27-
body_string = request[:body].read
27+
body_string = request[:body]&.read || ""
2828

2929
if body_string.empty?
3030
request.delete :body

lib/pact/consumer/server.rb

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
require 'uri'
22
require 'net/http'
33
require 'rack'
4+
require 'rack/handler/webbrick'
45

56
# Copied shamelessly from Capybara
67
# Used to run a mock service in a new thread when started by the AppManager or the ControlServer
@@ -66,11 +67,6 @@ def responsive?
6667
end
6768

6869
def run_default_server(app, port)
69-
begin
70-
require 'rack/handler/webrick'
71-
rescue LoadError
72-
require 'rackup/handler/webrick'
73-
end
7470
Rack::Handler::WEBrick.run(app, **webrick_opts) do |server|
7571
@port = server[:Port]
7672
end

lib/pact/mock_service/control_server/run.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
require 'pact/mock_service/control_server/app'
22
require 'pact/mock_service/server/webrick_request_monkeypatch'
3+
require 'rack/handler/webbrick'
34

45
module Pact
56
module MockService

lib/pact/mock_service/run.rb

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
require 'pact/mock_service/server/webrick_request_monkeypatch'
66
require 'pact/specification_version'
77
require 'pact/support/metrics'
8+
require 'rack/handler/webbrick'
89

910
module Pact
1011
module MockService

lib/rack/handler/webbrick.rb

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module Rack
2+
module Handler
3+
begin
4+
require 'rack/handler/webrick'
5+
WEBrick = Class.new(Rack::Handler::WEBrick)
6+
rescue LoadError
7+
require 'rackup/handler/webrick'
8+
WEBrick = Class.new(Rackup::Handler::WEBrick)
9+
end
10+
end
11+
end
12+

pact-mock_service.gemspec

+6-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,12 @@ Gem::Specification.new do |gem|
2020
gem.require_paths = ["lib"]
2121
gem.license = 'MIT'
2222

23-
gem.add_runtime_dependency 'rack', '>= 2.0', '< 4.0'
24-
gem.add_runtime_dependency 'rackup', '~> 2.0'
23+
if ENV['RACK_VERSION'] == '2'
24+
gem.add_runtime_dependency 'rack', '>= 2.0', '< 3.0'
25+
else
26+
gem.add_runtime_dependency 'rack', '>= 3.0', '< 4.0'
27+
gem.add_runtime_dependency 'rackup', '~> 2.0'
28+
end
2529
gem.add_runtime_dependency 'rspec', '>=2.14'
2630
gem.add_runtime_dependency 'find_a_port', '~> 1.0.1'
2731
gem.add_runtime_dependency 'thor', '>= 0.19', '< 2.0'

0 commit comments

Comments
 (0)