From 76935ed355a91344c608d4f3da73467ccdbce438 Mon Sep 17 00:00:00 2001 From: Christophe Lucas Date: Mon, 2 Mar 2026 11:33:41 -0800 Subject: [PATCH 1/4] Rack 2 and Rack 3 support --- lib/prerender_rails.rb | 5 ++++- prerender_rails.gemspec | 4 ++-- test/lib/prerender_rails.rb | 13 +++++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/prerender_rails.rb b/lib/prerender_rails.rb index af264c9..e35d0c7 100644 --- a/lib/prerender_rails.rb +++ b/lib/prerender_rails.rb @@ -242,7 +242,10 @@ def get_prerender_service_url def build_rack_response_from_prerender(prerendered_response) - response = Rack::Response.new(prerendered_response.body, prerendered_response.code, prerendered_response) + headers = {} + prerendered_response.each_header { |key, value| headers[key] = value } + + response = Rack::Response.new(prerendered_response.body, prerendered_response.code, headers) @options[:build_rack_response_from_prerender].call(response, prerendered_response) if @options[:build_rack_response_from_prerender] diff --git a/prerender_rails.gemspec b/prerender_rails.gemspec index d42c40d..3c69cce 100644 --- a/prerender_rails.gemspec +++ b/prerender_rails.gemspec @@ -15,10 +15,10 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] - spec.add_dependency 'rack', '~> 2.2.2' + spec.add_dependency 'rack', '>= 2.2' spec.add_dependency 'activesupport', '>= 0' - spec.add_development_dependency "bundler", "~> 2.1.2" + spec.add_development_dependency "bundler", "~> 4.0" spec.add_development_dependency "rake" spec.add_development_dependency "webmock" end diff --git a/test/lib/prerender_rails.rb b/test/lib/prerender_rails.rb index 719b61e..b8c6023 100644 --- a/test/lib/prerender_rails.rb +++ b/test/lib/prerender_rails.rb @@ -21,7 +21,7 @@ assert_equal response[2], [""] assert_equal response[0], 301 - assert_equal( { 'location' => 'http://google.com'}, response[1] ) + assert_equal 'http://google.com', response[1]['location'] end @@ -156,7 +156,7 @@ assert_equal ["cached2"], response[2] assert_equal response[0], 200 - assert_equal( { 'test' => 'test2Header'}, response[1] ) + assert_equal 'test2Header', response[1]['test'] end it "should return a prerendered response stripped of hop-by-hop headers" do @@ -177,7 +177,10 @@ assert_equal response[2], [""] assert_equal response[0], 401 - assert_equal( { 'content-type' => 'text/html', 'x-drop-test' => 'ShouldAlwaysHappen'}, response[1] ) + assert_equal 'text/html', response[1]['content-type'] + assert_equal 'ShouldAlwaysHappen', response[1]['x-drop-test'] + assert_nil response[1]['transfer-encoding'] + assert_nil response[1]['connection'] end it "should return a prerendered response stripped of custom-defined hop-by-hop headers" do @@ -193,7 +196,9 @@ assert_equal response[2], [""] assert_equal response[0], 200 - assert_equal( { 'content-type' => 'text/html' }, response[1] ) + assert_equal 'text/html', response[1]['content-type'] + assert_nil response[1]['x-drop-test'] + assert_nil response[1]['connection'] end describe '#buildApiUrl' do From a6f52fe5d0b6105cab1f71abc435f497ac646c0a Mon Sep 17 00:00:00 2001 From: Christophe Lucas Date: Mon, 2 Mar 2026 11:36:07 -0800 Subject: [PATCH 2/4] update gemspec --- prerender_rails.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prerender_rails.gemspec b/prerender_rails.gemspec index 3c69cce..2837461 100644 --- a/prerender_rails.gemspec +++ b/prerender_rails.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'rack', '>= 2.2' spec.add_dependency 'activesupport', '>= 0' - spec.add_development_dependency "bundler", "~> 4.0" + spec.add_development_dependency "bundler", ">= 2.1.2" spec.add_development_dependency "rake" spec.add_development_dependency "webmock" end From f256fcdcbd527d7317dc4d7ab9d77f604e2cac66 Mon Sep 17 00:00:00 2001 From: Christophe Lucas Date: Mon, 2 Mar 2026 11:46:59 -0800 Subject: [PATCH 3/4] bundler config --- prerender_rails.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prerender_rails.gemspec b/prerender_rails.gemspec index 2837461..b329efb 100644 --- a/prerender_rails.gemspec +++ b/prerender_rails.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'rack', '>= 2.2' spec.add_dependency 'activesupport', '>= 0' - spec.add_development_dependency "bundler", ">= 2.1.2" + spec.add_development_dependency "bundler", ">= 2.1" spec.add_development_dependency "rake" spec.add_development_dependency "webmock" end From ea02b9affc5921d02aca26d84e05efc09fd4dea4 Mon Sep 17 00:00:00 2001 From: Christophe Lucas Date: Thu, 5 Mar 2026 22:42:10 -0800 Subject: [PATCH 4/4] restrict to Rack 3 --- prerender_rails.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prerender_rails.gemspec b/prerender_rails.gemspec index b329efb..7a0c03f 100644 --- a/prerender_rails.gemspec +++ b/prerender_rails.gemspec @@ -15,7 +15,7 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] - spec.add_dependency 'rack', '>= 2.2' + spec.add_dependency 'rack', '>= 2.2', '< 4' spec.add_dependency 'activesupport', '>= 0' spec.add_development_dependency "bundler", ">= 2.1"