From e68c75c61432f4770419b2bb41d44c85439fcbd3 Mon Sep 17 00:00:00 2001 From: "M.Shibuya" Date: Mon, 15 Oct 2018 18:16:17 +0900 Subject: [PATCH] Session stores are not always subclasses of ActionDispatch::Session::AbstractStore Fixes #3076, refs. redis-store/redis-actionpack#22 --- lib/rails_admin/engine.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/rails_admin/engine.rb b/lib/rails_admin/engine.rb index f06d9b9ff1..14b7915370 100644 --- a/lib/rails_admin/engine.rb +++ b/lib/rails_admin/engine.rb @@ -43,9 +43,12 @@ class Engine < Rails::Engine Dir[File.join(File.dirname(__FILE__), '../tasks/*.rake')].each { |f| load f } end - # Check for required middlewares, can be missing in Rails API mode + # Check for required middlewares, users may forget to use them in Rails API mode config.after_initialize do |app| - has_session_store = app.config.middleware.to_a.any? { |m| m.klass.try(:<=, ActionDispatch::Session::AbstractStore) } || ::Rails.version < '5.0' + has_session_store = ::Rails.version < '5.0' || app.config.middleware.to_a.any? do |m| + m.klass.try(:<=, ActionDispatch::Session::AbstractStore) || + m.klass.name =~ /^ActionDispatch::Session::/ + end loaded = app.config.middleware.to_a.map(&:name) required = %w(ActionDispatch::Cookies ActionDispatch::Flash Rack::MethodOverride) missing = required - loaded