Sha256: 02ce96869b43bf45c96a759edf170c450afd29fc3845c538b48e7e3f7643e9f4

Contents?: true

Size: 1.98 KB

Versions: 3

Compression:

Stored size: 1.98 KB

Contents

require 'haml'
require 'mimetype_fu'
require 'mime-types'
require 'mime/types'

require 'rack/rewrite'
require 'rack/csrf'
require 'rack/session/moneta'
require 'rack/builder'
require 'rack/lint'
require 'dragonfly/middleware'

require_relative 'middlewares'

if ENV['PROFILER']
  require 'mongo'
  require 'rack-mini-profiler'
end

module Locomotive::Steam
  module Server

    class << self

      def default_middlewares
        server, configuration = self, self.configuration

        -> (stack) {
          use(Rack::Rewrite) { r301 %r{^/(.*)/$}, '/$1' }
          use Middlewares::Favicon

          if configuration.serve_assets
            use ::Rack::Static, {
              root: configuration.asset_path,
              urls: ['/images', '/fonts', '/samples', '/media', '/sites']
            }
            use Middlewares::DynamicAssets, {
              root:   configuration.asset_path,
              minify: configuration.minify_assets
            }
          end

          use Dragonfly::Middleware, :steam

          use Rack::Lint
          use Rack::Session::Moneta, configuration.moneta

          use Rack::MiniProfiler if ENV['PROFILER']

          server.steam_middleware_stack.each { |k| use k }
        }
      end

      def steam_middleware_stack
        [
          Middlewares::DefaultEnv,
          Middlewares::Site,
          Middlewares::Logging,
          Middlewares::UrlRedirection,
          Middlewares::Robots,
          Middlewares::Timezone,
          Middlewares::EntrySubmission,
          Middlewares::Locale,
          Middlewares::LocaleRedirection,
          Middlewares::Path,
          Middlewares::Page,
          Middlewares::Sitemap,
          Middlewares::TemplatizedPage
        ]
      end

      def to_app
        stack = configuration.middleware

        Rack::Builder.new do
          stack.inject(self)

          run Middlewares::Renderer.new(nil)
        end
      end

      def configuration
        Locomotive::Steam.configuration
      end

    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
locomotivecms_steam-1.0.0.rc8 lib/locomotive/steam/server.rb
locomotivecms_steam-1.0.0.rc6 lib/locomotive/steam/server.rb
locomotivecms_steam-1.0.0.rc4 lib/locomotive/steam/server.rb