Skip to content

Commit

Permalink
Fix inheritance of parent_controller when controllers were eagerly lo…
Browse files Browse the repository at this point in the history
  • Loading branch information
jalyna committed Jan 24, 2022
1 parent 82cad9e commit ed8602a
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lib/rails_admin/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -269,10 +269,16 @@ def default_hidden_fields=(fields)

def parent_controller=(name)
@parent_controller = name

if defined?(RailsAdmin::ApplicationController)
RailsAdmin.send(:remove_const, :ApplicationController)
load RailsAdmin::Engine.root.join('app/controllers/rails_admin/application_controller.rb')
end

if defined?(RailsAdmin::MainController)
RailsAdmin.send(:remove_const, :MainController)
load RailsAdmin::Engine.root.join('app/controllers/rails_admin/main_controller.rb')
end
end

def total_columns_width=(_)
Expand Down
6 changes: 6 additions & 0 deletions spec/rails_admin/config_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,11 @@ class TestController < ActionController::Base; end

describe '.parent_controller=' do
context 'if RailsAdmin::ApplicationController is already loaded' do
before do
# preload cotrollers (e.g. when config.eager_load = true)
RailsAdmin::MainController
end

after do
RailsAdmin::Config.reset
RailsAdmin.send(:remove_const, :ApplicationController)
Expand All @@ -292,6 +297,7 @@ class TestController < ActionController::Base; end
it 'can be changed' do
RailsAdmin.config.parent_controller = 'ApplicationController'
expect(RailsAdmin::ApplicationController.superclass).to eq ApplicationController
expect(RailsAdmin::MainController.superclass.superclass).to eq ApplicationController
end
end
end
Expand Down

0 comments on commit ed8602a

Please sign in to comment.