Rack (web server interface)
Original author(s) | Christian Neukirchen |
---|---|
Developer(s) | James Tucker, Josh Peek, José Valim, Michael Fellinger, Aaron Patterson, Santiago Pastorino, Konstantin Haase |
Stable release | 1.5.1 / January 28, 2013 |
Operating system | Cross-platform |
Type | Middleware |
License | MIT License |
Website |
rack |
Rack provides a modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses it unifies the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call.
Rack is used by many Ruby web frameworks and libraries, such as Ruby On Rails and Sinatra. It is available as a Ruby Gem.
Rack has already inspired a JavaScript framework[1] (jackjs) and a Perl one (Plack), a Common Lisp one[2] (Clack), and has resulted in the Ruby developer quasi-standard of "rack-compliant".[3]
It was also cited as an inspiration for OWIN.[4]
Example application
A Rack-compatible "Hello World" application in Ruby syntax:
app = lambda do |env|
body = "Hello, World!"
[200, {"Content-Type" => "text/plain", "Content-Length" => body.length.to_s}, [body]]
end
run app
See also
- Python WSGI
- Perl Web Server Gateway Interface
- Python Paste
- Smalltalk Seaside
- FastCGI
- Java Servlet
- Server-side JavaScript
- Apache JServ Protocol
- ZeroC Ice
- Cisco Etch
- ISAPI Internet Server Application Programming Interface (Microsoft)
References
- ↑ jack - introduction. Jackjs.org. Retrieved on 2013-09-20.
- ↑ clacklisp.org. Retrieved on 2014-10-17.
- ↑ Pancake: How To Stack and Loosely Couple Rack-Based Webapps Together. Rubyinside.com (2009-12-04). Retrieved on 2013-09-20.
- ↑ http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana. Asp.net. Retrieved on 2014-10-01.
External links
|
|
This article is issued from Wikipedia - version of the Wednesday, November 18, 2015. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.