bwillis / versioncake

:cake: Version Cake is an unobtrusive way to version APIs in your Rails or Rack apps

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

It brokes every view with Rails >= 6.0.0.rc1

micred opened this issue · comments

ActionView cache handling has been changed in Rails 6.0.0.rc1.

If versioncake gem is in the Gemfile (even if not configured/used) every view is broken with errors that have apparently no connection with versioncake.
It takes us hours to find that versioncake was the reason of the following vague errors:

     NoMethodError:
       undefined method `clear' for nil:NilClass
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/template/resolver.rb:181:in `clear_cache'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/path_set.rb:16:in `each'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/path_set.rb:16:in `each'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/lookup_context.rb:79:in `block in clear'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/lookup_context.rb:78:in `each'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/lookup_context.rb:78:in `clear'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/cache_expiry.rb:40:in `clear_cache'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/cache_expiry.rb:30:in `block (2 levels) in clear_cache_if_necessary'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/file_update_checker.rb:83:in `execute'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/cache_expiry.rb:32:in `block in clear_cache_if_necessary'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/cache_expiry.rb:23:in `synchronize'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/cache_expiry.rb:23:in `clear_cache_if_necessary'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/cache_expiry.rb:11:in `before'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:429:in `block in make_lambda'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:201:in `block (2 levels) in halting'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:607:in `block (2 levels) in default_terminator'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:606:in `catch'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:606:in `block in default_terminator'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:202:in `block in halting'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:514:in `block in invoke_before'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:514:in `each'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:514:in `invoke_before'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:134:in `run_callbacks'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb:111:in `run!'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb:73:in `block in run!'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb:70:in `tap'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/execution_wrapper.rb:70:in `run!'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/executor.rb:12:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/static.rb:126:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-2.0.7/lib/rack/sendfile.rb:111:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/host_authorization.rb:77:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/railties-6.0.0/lib/rails/engine.rb:526:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-test-1.1.0/lib/rack/mock_session.rb:29:in `request'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-test-1.1.0/lib/rack/test.rb:266:in `process_request'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-test-1.1.0/lib/rack/test.rb:129:in `custom_request'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-test-1.1.0/lib/rack/test.rb:66:in `post'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rspec_api_documentation-6.1.0/lib/rspec_api_documentation/rack_test_client.rb:38:in `do_request'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rspec_api_documentation-6.1.0/lib/rspec_api_documentation/client_base.rb:42:in `process'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rspec_api_documentation-6.1.0/lib/rspec_api_documentation/client_base.rb:16:in `post'
     # ./spec/acceptance/user_spec.rb:10:in `block (3 levels) in <top (required)>'

or errors like:

     NoMethodError:
       undefined method `compute_if_absent' for nil:NilClass
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/template/resolver.rb:199:in `block in query'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/template/resolver.rb:196:in `map'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/template/resolver.rb:196:in `query'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/template/resolver.rb:189:in `_find_all'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/template/resolver.rb:121:in `block in find_all'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/template/resolver.rb:156:in `block in cached'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/template/resolver.rb:66:in `cache'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/template/resolver.rb:155:in `cached'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/template/resolver.rb:120:in `find_all'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/path_set.rb:77:in `block (2 levels) in _find_all'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/path_set.rb:76:in `each'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/path_set.rb:76:in `block in _find_all'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/path_set.rb:75:in `each'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/path_set.rb:75:in `_find_all'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/path_set.rb:55:in `find_all'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/lookup_context.rb:137:in `find_all'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/base.rb:985:in `each_template'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/base.rb:975:in `collect_responses_from_templates'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/base.rb:953:in `collect_responses'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/base.rb:858:in `mail'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/devise-4.7.0/lib/devise/mailers/helpers.rb:19:in `devise_mail'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/devise-4.7.0/app/mailers/devise/mailer.rb:9:in `confirmation_instructions'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/abstract_controller/base.rb:196:in `process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:101:in `run_callbacks'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/abstract_controller/callbacks.rb:41:in `process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/abstract_controller/base.rb:136:in `process'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/rescuable.rb:25:in `block in process'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/rescuable.rb:17:in `handle_exceptions'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/rescuable.rb:24:in `process'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/rendering.rb:39:in `process'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/base.rb:637:in `block in process'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/notifications.rb:180:in `block in instrument'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/notifications.rb:180:in `instrument'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/base.rb:636:in `process'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/message_delivery.rb:123:in `block in processed_mailer'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/message_delivery.rb:122:in `tap'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/message_delivery.rb:122:in `processed_mailer'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionmailer-6.0.0/lib/action_mailer/message_delivery.rb:113:in `deliver_now'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/devise-4.7.0/lib/devise/models/authenticatable.rb:199:in `send_devise_notification'
     # /Users/michele/.rvm/gems/ruby-2.5.5/bundler/gems/devise_token_auth-b6915aa1bd12/app/models/devise_token_auth/concerns/user.rb:61:in `send_confirmation_instructions'
     # /Users/michele/.rvm/gems/ruby-2.5.5/bundler/gems/devise_token_auth-b6915aa1bd12/app/controllers/devise_token_auth/registrations_controller.rb:48:in `create'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/abstract_controller/base.rb:196:in `process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_controller/metal/rendering.rb:30:in `process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:135:in `run_callbacks'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/abstract_controller/callbacks.rb:41:in `process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_controller/metal/rescue.rb:22:in `process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/notifications.rb:180:in `block in instrument'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/notifications.rb:180:in `instrument'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activerecord-6.0.0/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/abstract_controller/base.rb:136:in `process'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionview-6.0.0/lib/action_view/rendering.rb:39:in `process'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_controller/metal.rb:191:in `dispatch'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_controller/metal.rb:252:in `dispatch'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/routing/route_set.rb:51:in `dispatch'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/routing/route_set.rb:33:in `serve'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/routing/mapper.rb:48:in `serve'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/journey/router.rb:49:in `block in serve'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/journey/router.rb:32:in `each'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/journey/router.rb:32:in `serve'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/routing/route_set.rb:837:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/versioncake-3.4.0/lib/versioncake/rack/middleware.rb:23:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/bullet-6.0.2/lib/bullet/rack.rb:15:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/warden-1.2.8/lib/warden/manager.rb:36:in `block in call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/warden-1.2.8/lib/warden/manager.rb:34:in `catch'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/warden-1.2.8/lib/warden/manager.rb:34:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-cors-1.0.3/lib/rack/cors.rb:95:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-2.0.7/lib/rack/tempfile_reaper.rb:15:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-2.0.7/lib/rack/etag.rb:25:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-2.0.7/lib/rack/conditional_get.rb:38:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-2.0.7/lib/rack/head.rb:12:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/http/content_security_policy.rb:18:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-2.0.7/lib/rack/session/abstract/id.rb:232:in `context'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-2.0.7/lib/rack/session/abstract/id.rb:226:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/cookies.rb:648:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/callbacks.rb:101:in `run_callbacks'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/airbrake-8.3.2/lib/airbrake/rack/middleware.rb:33:in `call!'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/airbrake-8.3.2/lib/airbrake/rack/middleware.rb:21:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/railties-6.0.0/lib/rails/rack/logger.rb:38:in `call_app'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/railties-6.0.0/lib/rails/rack/logger.rb:26:in `block in call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/tagged_logging.rb:80:in `block in tagged'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/tagged_logging.rb:28:in `tagged'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/tagged_logging.rb:80:in `tagged'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/railties-6.0.0/lib/rails/rack/logger.rb:26:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/request_store-1.4.1/lib/request_store/middleware.rb:19:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/request_id.rb:27:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-2.0.7/lib/rack/method_override.rb:22:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-2.0.7/lib/rack/runtime.rb:22:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/executor.rb:14:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/static.rb:126:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-2.0.7/lib/rack/sendfile.rb:111:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/actionpack-6.0.0/lib/action_dispatch/middleware/host_authorization.rb:77:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/railties-6.0.0/lib/rails/engine.rb:526:in `call'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-test-1.1.0/lib/rack/mock_session.rb:29:in `request'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-test-1.1.0/lib/rack/test.rb:266:in `process_request'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-test-1.1.0/lib/rack/test.rb:129:in `custom_request'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rack-test-1.1.0/lib/rack/test.rb:66:in `post'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rspec_api_documentation-6.1.0/lib/rspec_api_documentation/rack_test_client.rb:38:in `do_request'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rspec_api_documentation-6.1.0/lib/rspec_api_documentation/client_base.rb:42:in `process'
     # /Users/michele/.rvm/gems/ruby-2.5.5/gems/rspec_api_documentation-6.1.0/lib/rspec_api_documentation/client_base.rb:16:in `post'
     # ./spec/acceptance/user_spec.rb:10:in `block (3 levels) in <top (required)>'

Pay attention if you upgrade to Rails 6.

We too have been chasing the elusive compute_if_absent issue and suspected this gem. If we come up with an elegant solution, I'll share it. Thanks.

FYI this hack satisfied my needs https://github.com/trak3r/versioncake/pull/1/files
I realize it's not a patch worthy of the master branch but might help others who arrive here looking for help.

commented

Sorry for the trouble and thanks for the referenced files 🙌