lib/hanami/app.rb in hanami-1.1.1 vs lib/hanami/app.rb in hanami-1.2.0.beta1
- old
+ new
@@ -24,12 +24,14 @@
@builder = Rack::Builder.new
@routes = Hanami::Router.new
mount(configuration)
- middleware(environment)
+ middleware(configuration, environment)
builder.run(routes)
+
+ @app = builder.to_app
end
# Implements Rack SPEC
#
# @param env [Hash] a Rack env
@@ -37,15 +39,19 @@
# @return [Array] a serialized Rack response
#
# @since 0.9.0
# @api private
def call(env)
- builder.call(env)
+ app.call(env)
end
private
+ # @since x.x.x
+ # @api private
+ attr_reader :app
+
# @since 0.9.0
# @api private
attr_reader :builder
# @since 0.9.0
@@ -60,17 +66,31 @@
end
end
# @since 0.9.0
# @api private
- def middleware(environment)
+ #
+ # rubocop:disable Metrics/AbcSize
+ # rubocop:disable Metrics/MethodLength
+ def middleware(configuration, environment)
builder.use Hanami::CommonLogger, Hanami.logger unless Hanami.logger.nil?
builder.use Rack::ContentLength
+ configuration.middleware.each do |m, args, blk|
+ builder.use(m, *args, &blk)
+ end
+
+ if configuration.early_hints
+ require 'hanami/early_hints'
+ builder.use Hanami::EarlyHints
+ end
+
if middleware = environment.static_assets_middleware # rubocop:disable Lint/AssignmentInCondition
builder.use middleware
end
builder.use Rack::MethodOverride
end
+ # rubocop:enable Metrics/MethodLength
+ # rubocop:enable Metrics/AbcSize
end
end