/rack-berater

Primary LanguageRubyMIT LicenseMIT

Rack::Berater

Limit incoming Rack requests with Berater.

Basic Usage

Transform limit errors into HTTP status code 429

require 'rack/berater/railtie'

Customized Response

Customize the rack response returned when a limit error occurs:

  • status_code - which HTTP status code
  • body - what message
  • headers - hash of headers
require 'rack/berater'

Rails.application.middleware.use(Rack::Berater, status_code: 503, body: 'slow down yo')

Enforce Limits

Add a limiter to every incoming rack request.

require 'rack/berater'

Rails.application.middleware.use(Rack::Berater, limiter: Berater::ConcurrencyLimiter.new(key, capacity))

Custom Error Types

Register exceptions to be handled by Rack::Berater

Rack::Berater::ERRORS << NoMemoryError

Contributing

Yes please :)

  1. Fork it
  2. Create your feature branch (git checkout -b my-feature)
  3. Ensure the tests pass (bundle exec rspec)
  4. Commit your changes (git commit -am 'awesome new feature')
  5. Push your branch (git push origin my-feature)
  6. Create a Pull Request

Gem codecov