Class: RailsDevTweaks::GranularAutoload::Middleware
- Inherits:
-
Object
- Object
- RailsDevTweaks::GranularAutoload::Middleware
- Defined in:
- lib/rails_dev_tweaks/granular_autoload/middleware.rb
Overview
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.
Class Attribute Summary collapse
-
.processed_a_request ⇒ Object
writeonly
Sets the attribute processed_a_request.
Class Method Summary collapse
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ Middleware
constructor
A new instance of Middleware.
Constructor Details
#initialize(app) ⇒ Middleware
Returns a new instance of Middleware.
13 14 15 |
# File 'lib/rails_dev_tweaks/granular_autoload/middleware.rb', line 13 def initialize(app) @app = app end |
Class Attribute Details
.processed_a_request=(value) ⇒ Object (writeonly)
Sets the attribute processed_a_request
7 8 9 |
# File 'lib/rails_dev_tweaks/granular_autoload/middleware.rb', line 7 def processed_a_request=(value) @processed_a_request = value end |
Class Method Details
.processed_a_request? ⇒ Boolean
8 9 10 |
# File 'lib/rails_dev_tweaks/granular_autoload/middleware.rb', line 8 def processed_a_request? @processed_a_request end |
Instance Method Details
#call(env) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# 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 |