Skip to content

Commit 238f18e

Browse files
committed
Fix models stored in eager_load_paths are not picked up by #viable_models
Closes #3373 app.paths.eager_load is the Rails default value and does not reflect application-specific eager_load_paths. https://github.com/rails/rails/blob/f77ec9aa67afd6f28dfbd21970df4f58acf025be/railties/lib/rails/engine/configuration.rb#L79-L81
1 parent b627580 commit 238f18e

5 files changed

Lines changed: 12 additions & 3 deletions

File tree

lib/rails_admin/config.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ def viable_models
334334
included_models.collect(&:to_s).presence || begin
335335
@@system_models ||= # memoization for tests
336336
([Rails.application] + Rails::Engine.subclasses.collect(&:instance)).flat_map do |app|
337-
(app.paths['app/models'].to_a + app.paths.eager_load).collect do |load_path|
337+
(app.paths['app/models'].to_a + app.config.eager_load_paths).collect do |load_path|
338338
Dir.glob(app.root.join(load_path)).collect do |load_dir|
339339
Dir.glob(load_dir + '/**/*.rb').collect do |filename|
340340
# app/models/module/class.rb => module/class.rb => module/class => Module::Class
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class Basketball < Ball
2+
end
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class Basketball < Ball
2+
end

spec/dummy_app/config/application.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ class Application < Rails::Application
2323
# Application configuration should go into files in config/initializers
2424
# -- all .rb files in that directory are automatically loaded.
2525
config.load_defaults Rails.version[0, 3]
26-
config.eager_load_paths.reject! { |p| p =~ %r{/app/(\w+)$} && !%w(controllers helpers views).push(CI_ORM).include?(Regexp.last_match[1]) }
27-
config.autoload_paths += %W(#{config.root}/app/#{CI_ORM} #{config.root}/app/#{CI_ORM}/concerns #{config.root}/lib)
26+
config.eager_load_paths.reject! { |p| p =~ %r{/app/([^/]+)} && !%W(controllers locales mailers #{CI_ORM}).include?(Regexp.last_match[1]) }
27+
config.eager_load_paths += %W(#{config.root}/app/#{CI_ORM}/eager_loaded)
28+
config.autoload_paths += %W(#{config.root}/lib)
2829
config.i18n.load_path += Dir[Rails.root.join('app', 'locales', '*.{rb,yml}').to_s]
2930
config.active_record.time_zone_aware_types = [:datetime, :time] if CI_ORM == :active_record
3031
config.active_storage.service = :local if defined?(ActiveStorage)

spec/rails_admin/config_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,10 @@ class RecursivelyEmbedsMany
255255
it 'should not include classnames start with Concerns::' do
256256
expect(RailsAdmin::Config.models_pool.select { |m| m.match(/^Concerns::/) }).to be_empty
257257
end
258+
259+
it 'includes models in the directory added by config.eager_load_paths' do
260+
expect(RailsAdmin::Config.models_pool).to include('Basketball')
261+
end
258262
end
259263

260264
describe '.parent_controller' do

0 commit comments

Comments
 (0)