Class: Middleware::Rolemodel::SourceMap

Inherits:
Object
  • Object
show all
Defined in:
lib/generators/rolemodel/source_map/templates/lib/middleware/rolemodel/source_map.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, **options) ⇒ SourceMap

Returns a new instance of SourceMap.



6
7
8
9
10
11
12
13
# File 'lib/generators/rolemodel/source_map/templates/lib/middleware/rolemodel/source_map.rb', line 6

def initialize(app, **options)
  root = options.delete(:root) || 'maps'
  default_headers = { 'Set-Cookie' => 'Same-Site=None', 'Cache-Control' => 'max-age=0;no-cache' }
  custom_headers = default_headers.merge(options.delete(:headers) || {})
  @app = app
  @allowed_users_emails = ENV.fetch('SOURCE_MAPS_ALLOWED_USERS_EMAILS', '').split(',')
  @file_server = Rack::Files.new(root, custom_headers)
end

Instance Method Details

#call(env) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/generators/rolemodel/source_map/templates/lib/middleware/rolemodel/source_map.rb', line 15

def call(env)
  if allowed_sourcemap?(env)
    @file_server.call(env.tap { |env| env['PATH_INFO'].sub!(%r{^/[\w-]+[^/]}, '') })
  else
    @app.call(env)
  end
end