Sha256: 97185f81709c5d2734f35e3d759d4681d1635390498df8b333c6d773ff42ab73

Contents?: true

Size: 1.66 KB

Versions: 6

Compression:

Stored size: 1.66 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 Jets::Controller::Middleware::Local # mimics AWS Lambda for local server only
        middleware.use Rack::Runtime
        middleware.use Rack::MethodOverride
        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

Version Path
jets-1.1.5 lib/jets/middleware/default_stack.rb
jets-1.1.4 lib/jets/middleware/default_stack.rb
jets-1.1.3 lib/jets/middleware/default_stack.rb
jets-1.1.2 lib/jets/middleware/default_stack.rb
jets-1.1.1 lib/jets/middleware/default_stack.rb
jets-1.1.0 lib/jets/middleware/default_stack.rb