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