inertiajs / inertia-rails

The Rails adapter for Inertia.js.

Home Page:https://inertiajs.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Middleware fails with Rack v2.1.0/2.1.1

ledermann opened this issue · comments

Recently, the gem rack was released as v2.1.0 and v2.1.1 with lots of changes.

These updates are not compatible with inertial-rails - the test suite fails:

Failures:

  1) InertiaRails::Middleware the version is stale tells the client to refresh
     Failure/Error: get empty_test_path, headers: {'X-Inertia' => true, 'X-Inertia-Version' => 'blkajdf'}

     NoMethodError:
       undefined method `[]' for nil:NilClass
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-2.1.1/lib/rack/etag.rb:38:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-2.1.1/lib/rack/conditional_get.rb:27:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-2.1.1/lib/rack/head.rb:14:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/http/content_security_policy.rb:18:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-2.1.1/lib/rack/session/abstract/id.rb:277:in `context'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-2.1.1/lib/rack/session/abstract/id.rb:271:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/cookies.rb:648:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.2.1/lib/active_support/callbacks.rb:101:in `run_callbacks'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/railties-6.0.2.1/lib/rails/rack/logger.rb:38:in `call_app'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/railties-6.0.2.1/lib/rails/rack/logger.rb:26:in `block in call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.2.1/lib/active_support/tagged_logging.rb:80:in `block in tagged'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.2.1/lib/active_support/tagged_logging.rb:28:in `tagged'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.2.1/lib/active_support/tagged_logging.rb:80:in `tagged'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/railties-6.0.2.1/lib/rails/rack/logger.rb:26:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/request_id.rb:27:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-2.1.1/lib/rack/method_override.rb:24:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-2.1.1/lib/rack/runtime.rb:24:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.2.1/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/static.rb:126:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-2.1.1/lib/rack/sendfile.rb:113:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/host_authorization.rb:77:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/railties-6.0.2.1/lib/rails/engine.rb:526:in `call'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-test-1.1.0/lib/rack/mock_session.rb:29:in `request'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-test-1.1.0/lib/rack/test.rb:266:in `process_request'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rack-test-1.1.0/lib/rack/test.rb:119:in `request'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/testing/integration.rb:270:in `process'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/testing/integration.rb:18:in `get'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionpack-6.0.2.1/lib/action_dispatch/testing/integration.rb:357:in `block (2 levels) in <module:Runner>'
     # /Users/ledermann/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rails-controller-testing-1.0.4/lib/rails/controller/testing/integration.rb:13:in `block (2 levels) in <module:Integration>'
     # ./spec/inertia/middleware_spec.rb:4:in `block (3 levels) in <top (required)>'

Some further investigations required. Maybe it's a bug in Rack.

With v2.0.8 it works fine.

Was just investigating this same thing, but you're a step ahead of me! Thanks for the issue @ledermann

Thank you for fixing this issue, @BrandonShar!