Ring is a Clojure web applications library inspired by Python's WSGI and Ruby's Rack. By abstracting the details of HTTP into a simple, unified API, Ring allows web applications to be constructed of modular components that can be shared among a variety of applications, web servers, and web frameworks. This is a forked version of Ring from 1.8.1 that includes the following additional changes:
- Support for a timeout handler that can be passed to the Jetty adapter
- Tracking request ingestion time in the request map from Jetty
- Expose the Jetty request queue to the creator of the Server
The SPEC file at the root of this distribution provides a complete description of the Ring interface.
From version 1.2.1 onward, the ring/ring-core package no longer comes
with the javax.servlet/servlet-api package as a dependency (see
issue #89).
If you are using the AlexsandroRyan/ring-core namespace on its own, you may
run into errors when executing tests or running alternative adapters.
To resolve this, include the following dependency in your dev profile:
[javax.servlet/servlet-api "2.5"]
ring/ring- meta-package containing all relevant dependenciesring/ring-core- core functions and middleware for Ring handlers, requests and responsesorg.ring-clojure/ring-core-protocols- contains only the protocols necessary for building Ring responsesorg.ring-clojure/ring-websocket-protocols- contains only the protocols necessary for WebSocketsring/ring-devel- functions for developing and debugging Ring applicationsring/ring-servlet- construct legacy Java Servlets (≤ 4.0) from Ring handlersorg.ring-clojure/ring-jakarta-servletconstruct Jakarta Servlets (≥ 5.0) from Ring handlersring/ring-jetty-adapter- a Ring adapter that uses an embedded Jetty web server
To include one of the above libraries, for instance ring-core, add
the following dependency to your deps.edn file:
[AlexsandroRyan/ring-core "1.0.0-1.8.1"]
Or to your Leiningen project file:
[AlexsandroRyan/ring "1.0.0-1.8.1"]
Please read [CONTRIBUTING.md][5] before submitting a pull request.
This project borrows heavily from Ruby's Rack and Python's WSGI; thanks to those communities for their work. Thanks also go to the many individuals who have contributed to Ring's code and documentation over the years.
Copyright © 2009-2024 Mark McGranaghan, James Reeves & contributors.
Released under the MIT license.