Class: HttpMethodNotAllowedMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/http_method_not_allowed_middleware.rb,
lib/http_method_not_allowed_middleware/version.rb

Constant Summary collapse

RACK_LOGGER =
'rack.logger'
VERSION =
"0.2.1"

Instance Method Summary collapse

Constructor Details

#initialize(app, opts = {}) ⇒ HttpMethodNotAllowedMiddleware

Returns a new instance of HttpMethodNotAllowedMiddleware.



8
9
10
11
12
13
14
15
# File 'lib/http_method_not_allowed_middleware.rb', line 8

def initialize(app, opts = {})
  @app = app
  @debug = opts[:debug]

  @logger = @logger_proc = nil
  @logger_proc = opts[:logger] if opts[:logger]&.respond_to?(:call)
  @logger = opts[:logger] if opts[:logger] && @logger_proc.nil?
end

Instance Method Details

#call(env) ⇒ Object

Gracefully return 405 if we get a request with an unsupported HTTP method



18
19
20
21
22
23
24
25
# File 'lib/http_method_not_allowed_middleware.rb', line 18

def call(env)
  if !ActionDispatch::Request::HTTP_METHODS.include?(env["REQUEST_METHOD"].upcase)
    debug(env, "ActionController::UnknownHttpMethod: #{env.inspect}")
    [405, { "Content-Type" => "text/plain" }, ["Method Not Allowed"]]
  else
    @app.call(env)
  end
end

#debug?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/http_method_not_allowed_middleware.rb', line 27

def debug?
  @debug ||= false
end