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