class Rubhttp::RackBuilder
Constants
- LockedError
Attributes
adapter[R]
Public Class Methods
app(&block)
click to toggle source
# File lib/rubhttp/rack_builder.rb, line 9 def self.app(&block) builder = new block.call(builder) if block_given? builder.app end
new()
click to toggle source
# File lib/rubhttp/rack_builder.rb, line 15 def initialize @adapter = nil @middlewares = [] end
Public Instance Methods
app()
click to toggle source
# File lib/rubhttp/rack_builder.rb, line 25 def app @app ||= begin lock! to_app end end
use(middleware, *args, &block)
click to toggle source
# File lib/rubhttp/rack_builder.rb, line 20 def use(middleware, *args, &block) raise_error_if_locked @middlewares << proc { |app| middleware.new(app, *args, &block) } end
Private Instance Methods
default_adapter()
click to toggle source
# File lib/rubhttp/rack_builder.rb, line 46 def default_adapter Adapters::HTTP.new end
lock!()
click to toggle source
# File lib/rubhttp/rack_builder.rb, line 34 def lock! @middlewares.freeze end
locked?()
click to toggle source
# File lib/rubhttp/rack_builder.rb, line 38 def locked? @middlewares.frozen? end
raise_error_if_locked()
click to toggle source
# File lib/rubhttp/rack_builder.rb, line 42 def raise_error_if_locked raise LockedError, "can't modify middleware stack after app created" if locked? end
to_app()
click to toggle source
# File lib/rubhttp/rack_builder.rb, line 50 def to_app @adapter = default_adapter if @adapter.nil? @adapter.freeze @middlewares.reverse.inject(@adapter) { |a, e| e[a].tap(&:freeze) } end