Sha256: 67192590368678d3d8c5d9c85b01f1eea543827c6285595f7d3098893baf0b47

Contents?: true

Size: 1.91 KB

Versions: 3

Compression:

Stored size: 1.91 KB

Contents

require 'better_errors'
require 'coffee_script'
require 'sprockets'
require "sprockets-sass"

require 'locomotive/wagon/listen'
require 'locomotive/wagon/server/middleware'
require 'locomotive/wagon/server/favicon'
require 'locomotive/wagon/server/dynamic_assets'
require 'locomotive/wagon/server/logging'
require 'locomotive/wagon/server/entry_submission'
require 'locomotive/wagon/server/path'
require 'locomotive/wagon/server/locale'
require 'locomotive/wagon/server/page'
require 'locomotive/wagon/server/templatized_page'
require 'locomotive/wagon/server/not_found'
require 'locomotive/wagon/server/renderer'

require 'locomotive/wagon/liquid'
require 'locomotive/wagon/misc'

module Locomotive::Wagon
  class Server

    def initialize(reader, options = {})
      Locomotive::Wagon::Dragonfly.setup!(reader.mounting_point.path)

      @reader = reader
      @app    = self.create_rack_app(@reader)

      unless options[:disable_listen]
        Locomotive::Wagon::Listen.instance.start(@reader)
      end
    end

    def call(env)
      env['wagon.mounting_point'] = @reader.mounting_point
      @app.call(env)
    end

    protected

    def create_rack_app(reader)
      Rack::Builder.new do
        use BetterErrors::Middleware
        use Rack::Lint

        use Rack::Session::Cookie, {
          key:          'wagon.session',
          path:         '/',
          expire_after: 2592000,
          secret:       'uselessinlocal'
        }

        use ::Dragonfly::Middleware, :images

        use Rack::Static, {
          urls: ['/images', '/fonts', '/samples'],
          root: File.join(reader.mounting_point.path, 'public')
        }

        use Favicon
        use DynamicAssets, reader.mounting_point.path

        use Logging

        use EntrySubmission

        use Path
        use Locale

        use Page
        use TemplatizedPage
        use NotFound
        use Renderer

        run Renderer.new
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
locomotivecms_wagon-1.2.2 lib/locomotive/wagon/server.rb
locomotivecms_wagon-1.2.1 lib/locomotive/wagon/server.rb
locomotivecms_wagon-1.2.0 lib/locomotive/wagon/server.rb