diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8970f0f..7e3d8dd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -22,6 +22,10 @@ jobs: rubyver: 2.7.6 - gemfile: gemfiles/rails70.gemfile rubyver: 3.1.2 + - gemfile: gemfiles/rails71.gemfile + rubyver: 3.4.2 + - gemfile: gemfiles/rails80.gemfile + rubyver: 3.4.2 env: RAILS_ENV: test diff --git a/Appraisals b/Appraisals index 3dc0125..233c8ee 100644 --- a/Appraisals +++ b/Appraisals @@ -21,21 +21,40 @@ end appraise 'rails60' do gem 'rails', '~> 6.0.0' - gem 'sqlite3' + gem 'sqlite3', '~> 1.3.6' + gem 'concurrent-ruby', '= 1.3.4' gem 'rspec-rails' end appraise 'rails61' do gem 'rails', '~> 6.1.0' - gem 'sqlite3' + gem 'sqlite3', '~> 1.4' + gem 'rake', '< 11.0' + gem 'concurrent-ruby', '= 1.3.4' gem 'rspec-rails' end appraise 'rails70' do gem 'rails', '~> 7.0.1' + gem 'sqlite3', '~> 1.4' + + gem 'concurrent-ruby', '= 1.3.4' + gem 'rspec-rails' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' gem 'sqlite3' gem 'rspec-rails' end + +appraise 'rails80' do + gem 'rails', '~> 8.0.0' + gem 'sqlite3' + + gem 'rspec-rails' +end + diff --git a/gemfiles/rails60.gemfile b/gemfiles/rails60.gemfile index 5b6e198..7ddbb7d 100644 --- a/gemfiles/rails60.gemfile +++ b/gemfiles/rails60.gemfile @@ -3,7 +3,8 @@ source "https://rubygems.org" gem "rails", "~> 6.0.0" -gem "sqlite3" +gem "sqlite3", "~> 1.3.6" +gem "concurrent-ruby", "= 1.3.4" gem "rspec-rails" gemspec path: "../" diff --git a/gemfiles/rails61.gemfile b/gemfiles/rails61.gemfile index 818be88..7801a62 100644 --- a/gemfiles/rails61.gemfile +++ b/gemfiles/rails61.gemfile @@ -3,7 +3,9 @@ source "https://rubygems.org" gem "rails", "~> 6.1.0" -gem "sqlite3" +gem "sqlite3", "~> 1.4" +gem "rake", "< 11.0" +gem "concurrent-ruby", "= 1.3.4" gem "rspec-rails" gemspec path: "../" diff --git a/gemfiles/rails70.gemfile b/gemfiles/rails70.gemfile index f0c4775..97b77a9 100644 --- a/gemfiles/rails70.gemfile +++ b/gemfiles/rails70.gemfile @@ -3,7 +3,8 @@ source "https://rubygems.org" gem "rails", "~> 7.0.1" -gem "sqlite3" +gem "sqlite3", "~> 1.4" +gem "concurrent-ruby", "= 1.3.4" gem "rspec-rails" gemspec path: "../" diff --git a/gemfiles/rails71.gemfile b/gemfiles/rails71.gemfile new file mode 100644 index 0000000..17ae679 --- /dev/null +++ b/gemfiles/rails71.gemfile @@ -0,0 +1,9 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "rails", "~> 7.1.0" +gem "sqlite3" +gem "rspec-rails" + +gemspec path: "../" diff --git a/gemfiles/rails80.gemfile b/gemfiles/rails80.gemfile new file mode 100644 index 0000000..ba72e34 --- /dev/null +++ b/gemfiles/rails80.gemfile @@ -0,0 +1,9 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "rails", "~> 8.0.0" +gem "sqlite3" +gem "rspec-rails" + +gemspec path: "../" diff --git a/lib/action_dispatch/routing/static_responder.rb b/lib/action_dispatch/routing/static_responder.rb index 699e3af..64db41a 100644 --- a/lib/action_dispatch/routing/static_responder.rb +++ b/lib/action_dispatch/routing/static_responder.rb @@ -93,6 +93,14 @@ def trigger_file_handler_initialization def call(env) env["PATH_INFO"] = path + if Gem::Version.new(Rails.version) >= Gem::Version.new('7.1') + status, headers, body = @file_handler.call(env) + if headers['Cache-Control'] + headers.delete('last-modified') + end + return [status, headers, body] + end + @file_handler.call(env) end diff --git a/rails-static-router.gemspec b/rails-static-router.gemspec index 2a2c609..6b034a9 100644 --- a/rails-static-router.gemspec +++ b/rails-static-router.gemspec @@ -15,7 +15,7 @@ Gem::Specification.new do |spec| spec.summary = spec.description spec.version = RailsStaticRouter::VERSION - spec.add_dependency 'railties', '>= 5.0', '< 7.1' + spec.add_dependency 'railties', '>= 5.0', '< 8.1' # Test and build tools # The test shouldn't broken by the incompatible RSpec version. diff --git a/spec/dummy/config/application.rb b/spec/dummy/config/application.rb index 3399ff4..d05920b 100644 --- a/spec/dummy/config/application.rb +++ b/spec/dummy/config/application.rb @@ -8,7 +8,11 @@ module Dummy class Application < Rails::Application - if Rails.version.match('7.0') + if Rails.version.match('8.0') + config.load_defaults 8.0 + elsif Rails.version.match('7.1') + config.load_defaults 7.1 + elsif Rails.version.match('7.0') config.load_defaults 7.0 elsif Rails.version.match('6.1') config.load_defaults 6.1 diff --git a/spec/dummy/config/environments/test.rb b/spec/dummy/config/environments/test.rb index 3c020b4..bd8766b 100644 --- a/spec/dummy/config/environments/test.rb +++ b/spec/dummy/config/environments/test.rb @@ -1,6 +1,6 @@ Rails.application.configure do - if Rails.version.match(/^(5|6|7)/) + if Rails.version.match(/^(5|6|7|8)/) # Settings specified here will take precedence over those in config/application.rb. # The test environment is used exclusively to run your application's diff --git a/spec/integration/routing_spec.rb b/spec/integration/routing_spec.rb index 61af545..026e0ee 100644 --- a/spec/integration/routing_spec.rb +++ b/spec/integration/routing_spec.rb @@ -15,8 +15,10 @@ expect(response.headers['Cache-Control']).to eq('my-cache-control') end - it 'cant response via non-defined static routes' do - expect { get '/mantap.txt' }.to raise_exception + if Gem::Version.new(Rails.version) < Gem::Version.new('8.0') + it 'cant response via non-defined static routes' do + expect { get '/mantap.txt' }.to raise_exception + end end it 'works with normal controller' do