Sha256: 7040379069be3aa7530c2d51772fb31c89d44b45b1592ddc3de6d24b5ac07e28

Contents?: true

Size: 1.85 KB

Versions: 2

Compression:

Stored size: 1.85 KB

Contents

require 'rack/showexceptions'
require 'coffee_script'

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

require 'locomotive/builder/liquid'
require 'locomotive/builder/misc'

module Locomotive::Builder
  class Server

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

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

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

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

    protected

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

        use Rack::Session::Cookie, {
          key:          'rack.session',
          domain:       '0.0.0.0',
          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

        use EntrySubmission

        use Path
        use Locale

        use Page
        use TemplatizedPage
        use NotFound
        use Renderer

        run Renderer.new
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
locomotivecms_builder-1.0.0.alpha2 lib/locomotive/builder/server.rb
locomotivecms_builder-1.0.0.alpha1 lib/locomotive/builder/server.rb