class Volt::DefaultMiddlewareStack

Public Class Methods

postboot_setup(volt_app, rack_app) click to toggle source

Setup the middleware that we need to wait for components to boot before we can set them up.

# File lib/volt/server/middleware/default_middleware_stack.rb, line 44
def self.postboot_setup(volt_app, rack_app)
  # Serve the opal files
  opal_files = OpalFiles.new(rack_app, volt_app.app_url, volt_app.app_path, volt_app.component_paths)
  volt_app.opal_files = opal_files
  volt_app.sprockets = opal_files.environment

  Volt::SprocketsHelpersSetup.new(volt_app)

  # Serve the main html files from public, also figure out
  # which JS/CSS files to serve.
  rack_app.use IndexFiles, volt_app, volt_app.component_paths, opal_files

  rack_app.use HttpResource, volt_app, volt_app.router

  # serve assets from public
  rack_app.use Rack::Static,
                urls: [''],
                root: 'public',
                index: 'index.html',
                header_rules: [
                  [:all, { 'Cache-Control' => 'public, max-age=86400' }]
                ]

  rack_app.run lambda { |env| [404, { 'Content-Type' => 'text/html; charset=utf-8' }, ['404 - page not found']] }
end
preboot_setup(volt_app, rack_app) click to toggle source

Setup on the middleware we can setup before booting components

# File lib/volt/server/middleware/default_middleware_stack.rb, line 16
def self.preboot_setup(volt_app, rack_app)
  # Should only be used in production
  if Volt.config.deflate
    rack_app.use Rack::Deflater
    rack_app.use Rack::Chunked
  end

  rack_app.use Rack::ContentLength
  rack_app.use Rack::KeepAlive
  rack_app.use Rack::ConditionalGet
  rack_app.use Rack::ETag

  rack_app.use Rack::Session::Cookie, {
    key: 'rack.session',
    # domain: 'localhost.com',
    path: '/',
    expire_after: 2592000,
    secret: Volt.config.app_secret
  }

  rack_app.use QuietCommonLogger
  if Volt.env.development? || Volt.env.test?
    rack_app.use Rack::ShowExceptions
  end
end