class RailsDevTweaks::GranularAutoload::Middleware
Here’s an idea, let’s not reload the entire dev environment for each asset request. Let’s only do that on regular content requests.
Attributes
processed_a_request[W]
Public Class Methods
new(app)
click to toggle source
# File lib/rails_dev_tweaks/granular_autoload/middleware.rb, line 13 def initialize(app) @app = app end
processed_a_request?()
click to toggle source
# File lib/rails_dev_tweaks/granular_autoload/middleware.rb, line 8 def processed_a_request? @processed_a_request end
Public Instance Methods
call(env)
click to toggle source
# File lib/rails_dev_tweaks/granular_autoload/middleware.rb, line 17 def call(env) request = ActionDispatch::Request.new(env.dup) # reload, or no? if Rails.application.config.dev_tweaks.granular_autoload_config.should_reload?(request) # Confusingly, we flip the request prepare/cleanup life cycle around so that we're only cleaning up on those # requests that want to be reloaded # No-op if this is the first request. The initializers take care of that one. if self.class.processed_a_request? && reload_dependencies? ActionDispatch::Reloader.cleanup! ActionDispatch::Reloader.prepare! end self.class.processed_a_request = true elsif Rails.application.config.dev_tweaks.log_autoload_notice Rails.logger.info 'RailsDevTweaks: Skipping ActionDispatch::Reloader hooks for this request.' end return @app.call(env) end
Private Instance Methods
reload_dependencies?()
click to toggle source
# File lib/rails_dev_tweaks/granular_autoload/middleware.rb, line 41 def reload_dependencies? application = Rails.application application.config.reload_classes_only_on_change != true || application.reloaders.map(&:updated?).any? end