Sha256: 568e08ee8f16e8397d3a137dd06a0d87c66fa8614d73277e00ac4489e86f28bd
Contents?: true
Size: 1.73 KB
Versions: 6
Compression:
Stored size: 1.73 KB
Contents
module Jets::Middleware class DefaultStack attr_reader :config, :app def initialize(app, config) @app = app @config = config end def build_stack Stack.new do |middleware| middleware.use Rack::Runtime middleware.use Rack::MethodOverride # must come before Middleware::Local for multipart post forms to work middleware.use Jets::Controller::Middleware::Local # mimics AWS Lambda for local server only middleware.use session_store, session_options # use session_store, session_options middleware.use Rack::Head middleware.use Rack::ConditionalGet middleware.use Rack::ETag use_webpacker(middleware) end end private # Written as method to easily not include webpacker for case when either # webpacker not installed at all or disabled upon `jets deploy`. def use_webpacker(middleware) return unless Jets.webpacker? # checks for local development if webpacker installed # Different check for middleware because we need webpacker helpers for url helpers. # But we dont want to actually serve via webpacker middleware when running on AWS. # By this time the url helpers are serving assets out of s3. return if File.exist?("#{Jets.root}/config/disable-webpacker-middleware.txt") # created as part of `jets deploy` require "jets/controller/middleware/webpacker_setup" middleware.use Webpacker::DevServerProxy end def session_store Jets.config.session[:store] # do not use dot notation. session.store is a method on ActiveSupport::OrderedOptions.new end def session_options defaults = { secret: ENV['SECRET_KEY_BASE'] } defaults.merge(Jets.config.session.options) end end end
Version data entries
6 entries across 6 versions & 1 rubygems