Skip to content

Commit 02c43be

Browse files
committed
Fix inheritance of parent_controller when controllers were eagerly loaded
1 parent 82cad9e commit 02c43be

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

lib/rails_admin/config.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,16 @@ def default_hidden_fields=(fields)
269269

270270
def parent_controller=(name)
271271
@parent_controller = name
272+
272273
if defined?(RailsAdmin::ApplicationController)
273274
RailsAdmin.send(:remove_const, :ApplicationController)
274275
load RailsAdmin::Engine.root.join('app/controllers/rails_admin/application_controller.rb')
275276
end
277+
278+
if defined?(RailsAdmin::MainController)
279+
RailsAdmin.send(:remove_const, :MainController)
280+
load RailsAdmin::Engine.root.join('app/controllers/rails_admin/main_controller.rb')
281+
end
276282
end
277283

278284
def total_columns_width=(_)

spec/rails_admin/config_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,11 @@ class TestController < ActionController::Base; end
283283

284284
describe '.parent_controller=' do
285285
context 'if RailsAdmin::ApplicationController is already loaded' do
286+
before do
287+
# preload cotrollers (e.g. when config.eager_load = true)
288+
RailsAdmin::MainController
289+
end
290+
286291
after do
287292
RailsAdmin::Config.reset
288293
RailsAdmin.send(:remove_const, :ApplicationController)
@@ -292,6 +297,7 @@ class TestController < ActionController::Base; end
292297
it 'can be changed' do
293298
RailsAdmin.config.parent_controller = 'ApplicationController'
294299
expect(RailsAdmin::ApplicationController.superclass).to eq ApplicationController
300+
expect(RailsAdmin::MainController.superclass.superclass).to eq ApplicationController
295301
end
296302
end
297303
end

0 commit comments

Comments
 (0)