Sha256: b95b855059c3a7738908d87b5317b8da7469220a6de0f6953fd879dfd3721dba

Contents?: true

Size: 1.73 KB

Versions: 37

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

37 entries across 37 versions & 1 rubygems

Version Path
jets-1.6.1 lib/jets/middleware/default_stack.rb
jets-1.6.0 lib/jets/middleware/default_stack.rb
jets-1.5.10 lib/jets/middleware/default_stack.rb
jets-1.5.9 lib/jets/middleware/default_stack.rb
jets-1.5.8 lib/jets/middleware/default_stack.rb
jets-1.5.7 lib/jets/middleware/default_stack.rb
jets-1.5.6 lib/jets/middleware/default_stack.rb
jets-1.5.5 lib/jets/middleware/default_stack.rb
jets-1.5.4 lib/jets/middleware/default_stack.rb
jets-1.5.3 lib/jets/middleware/default_stack.rb
jets-1.5.2 lib/jets/middleware/default_stack.rb
jets-1.5.1 lib/jets/middleware/default_stack.rb
jets-1.5.0 lib/jets/middleware/default_stack.rb
jets-1.4.11 lib/jets/middleware/default_stack.rb
jets-1.4.10 lib/jets/middleware/default_stack.rb
jets-1.4.9 lib/jets/middleware/default_stack.rb
jets-1.4.8 lib/jets/middleware/default_stack.rb
jets-1.4.7 lib/jets/middleware/default_stack.rb
jets-1.4.6 lib/jets/middleware/default_stack.rb
jets-1.4.5 lib/jets/middleware/default_stack.rb