Skip to content

Commit

Permalink
[wip] Adjust initialization timing
Browse files Browse the repository at this point in the history
  • Loading branch information
mshibuya committed Feb 27, 2022
1 parent 7a3a741 commit d2b951d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 20 deletions.
41 changes: 22 additions & 19 deletions lib/rails_admin/engine.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,6 @@ class Engine < Rails::Engine

config.action_dispatch.rescue_responses['RailsAdmin::ActionNotAllowed'] = :forbidden

initializer 'RailsAdmin precompile hook', group: :all do |app|
RailsAdmin::Config.initialize!
if defined?(Sprockets)
app.config.assets.precompile += %w[
rails_admin/application.js
rails_admin/application.css
]
app.config.assets.paths << RailsAdmin::Engine.root.join('src')
require 'rails_admin/support/esmodule_preprocessor'
Sprockets.register_preprocessor 'application/javascript', RailsAdmin::ESModulePreprocessor
end
self.importmap = Importmap::Map.new.draw(app.root.join('config/importmap.rails_admin.rb')) if defined?(Importmap)
end

initializer 'RailsAdmin reload config in development' do |app|
config.initializer_path = app.root.join('config/initializers/rails_admin.rb')

Expand All @@ -46,6 +32,28 @@ class Engine < Rails::Engine
end
end

initializer 'RailsAdmin apply configuration', after: :eager_load! do |app|
RailsAdmin::Config.initialize!

# Force route reload, since it doesn't reflect RailsAdmin action configuration yet
app.reload_routes!
end

initializer 'RailsAdmin precompile hook', group: :all, after: 'RailsAdmin apply configuration' do |app|
case RailsAdmin.config.asset_source
when :sprockets
app.config.assets.precompile += %w[
rails_admin/application.js
rails_admin/application.css
]
app.config.assets.paths << RailsAdmin::Engine.root.join('src')
require 'rails_admin/support/esmodule_preprocessor'
Sprockets.register_preprocessor 'application/javascript', RailsAdmin::ESModulePreprocessor
when :importmap
self.importmap = Importmap::Map.new.draw(app.root.join('config/importmap.rails_admin.rb')) if defined?(Importmap)
end
end

# 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? do |m|
Expand All @@ -68,11 +76,6 @@ class Engine < Rails::Engine
to config/application.rb.
ERROR
end

RailsAdmin::Config.initialize!

# Force route reload, since it doesn't reflect RailsAdmin action configuration yet
app.reload_routes!
end
end
end
7 changes: 6 additions & 1 deletion spec/dummy_app/config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ class Application < Rails::Application
config.i18n.load_path += Dir[Rails.root.join('app', 'locales', '*.{rb,yml}').to_s]
config.active_record.time_zone_aware_types = %i[datetime time] if CI_ORM == :active_record
config.active_storage.service = :local if defined?(ActiveStorage)
config.importmap.cache_sweepers << RailsAdmin::Engine.root.join('src') if config.respond_to? :importmap

case CI_ASSET
when :importmap
config.assets.paths << RailsAdmin::Engine.root.join('src')
config.importmap.cache_sweepers << RailsAdmin::Engine.root.join('src')
end
end
end

0 comments on commit d2b951d

Please sign in to comment.