Sha256: 4b2ab124092d05e6d2e0d593269136f8dae7f69caa3387822d0f60066d1c9e13

Contents?: true

Size: 1.92 KB

Versions: 4

Compression:

Stored size: 1.92 KB

Contents

require 'better_errors'
require 'coffee_script'

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/timezone'
require 'locomotive/wagon/server/templatized_page'
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

      BetterErrors.application_root = reader.mounting_point.path
    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 Rack::Lint

        use BetterErrors::MiddlewareWrapper

        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 Timezone

        use Page
        use TemplatizedPage

        run Renderer.new
      end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
locomotivecms_wagon-1.4.0 lib/locomotive/wagon/server.rb
locomotivecms_wagon-1.3.3 lib/locomotive/wagon/server.rb
locomotivecms_wagon-1.3.2 lib/locomotive/wagon/server.rb
locomotivecms_wagon-1.3.1 lib/locomotive/wagon/server.rb