Class: CacheStache::Web

Inherits:
Object
  • Object
show all
Defined in:
lib/cache_stache/web.rb

Class Method Summary collapse

Class Method Details

.call(env) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/cache_stache/web.rb', line 8

def call(env)
  ensure_routes_loaded!

  # Build app only once and cache it
  unless @app
    # Capture middlewares outside the Rack::Builder context
    mw = middlewares

    @app = Rack::Builder.new do
      mw.each { |middleware, args, block| use(middleware, *args, &block) }
      run CacheStache::Engine
    end.to_app

    Rails.logger.info "[CacheStache::Web] Rack app built successfully"
  end

  @app.call(env)
end

.middlewaresObject



31
32
33
# File 'lib/cache_stache/web.rb', line 31

def middlewares
  @middlewares ||= []
end

.reset_middlewares!Object



35
36
37
38
# File 'lib/cache_stache/web.rb', line 35

def reset_middlewares!
  @middlewares = []
  @app = nil
end

.reset_routes!Object



40
41
42
43
# File 'lib/cache_stache/web.rb', line 40

def reset_routes!
  @routes_loaded = false
  @app = nil
end

.use(middleware, *args, &block) ⇒ Object



27
28
29
# File 'lib/cache_stache/web.rb', line 27

def use(middleware, *args, &block)
  middlewares << [middleware, args, block]
end