awesome-rack
by coopermaa
A curated list of awesome Ruby rack, middlewares, frameworks and web servers
AI summary
Ruby framework guide
A curated list of resources and tutorials on Ruby web development frameworks, middleware, and servers
- stars
- 55
- forks
- 8
- watching
- 5
- awesome lists
- 2
- entries
- 280
What's in the list
280 links in 21 sections, with live GitHub stats.activeno commit in 2y
General
- Rack
Ruby Rack Official website
rack-contrib
Contributed Rack Middleware and Utilities
- Rack Spec
Rack Interface Specification
Rack Wiki
Has a list of tutorals, presentations and middlewares
- Rack Documentation
Rack Reference Documentation
the_metal
A spike for thoughts about Rack 2.0
- Rack Development
Rack Development list (Google Group)
Tutorials
- Introducing Rack
An overview of Rack interface and the Rack gem by Christian Neukirchen
- What's Rack
A Quick Introduction to Rack
- Rack basics
Covers basic usage of Response, ERB template and the tool
- Rack middleware
Create two simple middlewares and glue it all together using
- Creating Static Sites in Ruby with Rack
And deploy to Heroku
- A simple Ruby Rack router
A simple router in 17 lines of code
- Getting Started with Rack
Use Rack::Builder to create a simple framework that handles HTTP GET requests
- Rails on Rack
Covers Rails integration with Rack and interfacing with other Rack components. This guide tells you how to use Rack Middlewares in your Rails applications, Action Pack's internal Middleware stack and how to define a custom Middleware stack
- Class: Owing Rails by Marc-André Cournoyer
Understand the inner working of Rails by building a mini-version of Rails, from scratch
Tutorials / Class: Owing Rails by Marc-André Cournoyer
patterns
Rails-like framework built during the Owning Rails Masterclass to explain the design patterns behind Rails
Presentations
- Introducing Rack by Christian Neukirchen at EuRuKo 2007
An overview of Rack interface and the Rack gem
- 8 Minutes on Rack
The basic introduction to the Rack application definition
- Rack talk by Caleb Woods
A overview of essential Rack built-in middlewares and rack in Rails
- Ruby on Rack Small Talk by Meagan Waller
Builds an example that implements tiny MVC and a simple router. The example is available on
- Ruby MVC from scratch with Rack
The example code is available on the GitHub repo
- High Performance Rails (long edition) by Issei Naruta
Rails Performance tuning and how to do profiling and caching
- Rack - rolling your own, tiny like, web thingoes by Ryan Allen
Talks about concurrency
Videos
- Railscasts --- #271 Resque
is used in this Episode
Videos / Getting Started with Rack by Salma Urmi
- Getting Started with Rack
See also Mark Bate's article:
Videos
- Code School - Scaling Rails Applications: Advanced HTTP Caching (Episode #10)
talks about max-age, etags, last_modified and Reverse Proxy caches
Videos / Rack Middleware as a General Purpose Abstraction by Mitchell Hashimoto
- speakerdeck
the slide is available on
Videos
- Rails Conf 2013 You've got a Sinatra on your Rails by José Valim
Great look at how Rails uses Rack internally
Videos / RailsConf 2014 - Rack::Attack: Protect your app with this one weird gem! byAaron Suggs
- speakerdeck
the slide is available on
Web Servers
WEBrick
WEBrick is an HTTP server toolkit that can be configured as an HTTPS server, a proxy server, and a virtual-host server. It is now part of Ruby standard library for Ruby 1.9.3
CGI
The Common Gateway Interface (CGI) is a simple protocol for passing an HTTP request from a web server to a standalone program, and returning the output to the web browser
Thin
Tiny, fast & funny HTTP server. Glues together 3 of the best Ruby libraries: The parser, network I/O library and , a minimal interface between webservers and Ruby frameworks
- LiteSpeed
LiteSpeed Web Server (LSWS) is a high-performance Apache drop-in replacement, a commercial web server
net-http-server
A pure and small Ruby HTTP server
Rouge
minimal and fast HTTP 1.1 server for Rack applications, powered by , Ryan Dahl's and
Ebb
A small and fast web server specifically for hosting dynamic web applications
Fuzed
An integrated replacement for Mongrel+Revproxy systems in erlang
- GlassFish v3
An open-source application server project started by Sun Microsystems for the Java EE platform and now sponsored by Oracle Corporation
Phusion Passenger
A web server and application server, designed to be fast, robust and lightweight. Supports Ruby, Python, Node.js and Meteor, and is being used by high-profile companies such as Apple, Pixar, New York Times, AirBnB, Juniper etc as well as over 350.000 websites. Phusion Passenger 5 (codename "Raptor") has an innovative and optimized HTTP engine, making it up to 4x faster than Unicorn, up to 2x faster than Puma and up to 2x faster than Torquebox
Puma
A simple, fast, threaded, and highly concurrent HTTP 1.1 server writtern in Ruby
Reel
A fast, non-blocking "evented" web server written in Ruby. You'll need , a Rack adapter for Reel. Reel uses , an Actor-based concurrent object framework for Ruby. When you create new instances of a class, they're actually concurrent objects, each running
Web Servers / Reel
- Reel::DSL
Minimalist Reel CRUD/WS/SSE endpoint routing. Supports URI-based HTTP/S requests, and Web Sockets & Server Sent Events. Influenced by Angelo and Sinatra
Angelo
Sinatra-like DSL for Reel that supports WebSockets and SSE in their own thread, called "cells" (or actors). Angelo uses Celluloid, Celluloid::IO. Angelo replaces which is a very small extension for Sinatra Powered by EventMachine and EM-Synchrony that dramatically improves the concurrency of your web application
Web Servers
- Unicorn
Rack HTTP server for fast clients and Unix. Mostly wriiten in pure Ruby. Provides - a rackup-like command to launch the Unicorn HTTP server (it uses Rack::Builder DSL) and - a script/server-like command to launch the Unicorn HTTP server
unixrack
A ruby RACK webserver only for unix using the old unix style. (~500 LOC)
uWSGI
uWSGI application server container written in Python. Supports Python (WSGI), Ruby (Rack), Perl (PSGI), Lua (WSAPI), PHP (CGI), JVM (JWSGI), Mono (ASP.NET plugin), GO (GCCGO), CGI Scripts
- yahns
Sleepy, multi-threaded, non-blocking application server for Ruby
YARS
A server for your (Rack) apps
Goliath
A non-blocking Ruby web server framework. Bare metal performance, Rack API and middleware support, simple configuration, fully asynchronous processing, and readable and maintainable code. The framework is powered by an EventMachine reactor, a high-performance HTTP parser and Ruby 1.9+ runtime
Mongrel
A HTTP library and web server written in Ruby. What makes Mongrel so fast is the careful use of an Ragel extension to provide fast, accurate HTTP 1.1 protocol parsing
Mongrel2
An application, language, and network architecture agnostic web server that focuses on web applications using modern browser technologies. Written in C
Pow
Zero-config Rack server for Mac OS X. Have it serving your apps locally in under a minute. A Linux fork is availble
nack
A Rack server built on top of the Node.js HTTP server
Gorack
A Go backed frontend webserver for Ruby's Rack applications, inspired by Node's
Mizuno
Jetty-powered running shoes for JRuby/Rack. A Rack server for JRuby. It uses the embeddable Jetty Java servlet container. Mizuno also supports asynchronous request handling, via the Java Servlet 3.0 asynchronous processing mechanism
TorqueBox
Ruby Web & Application Server built on JBoss and JRuby. TorqueBox goes beyond providing web-centric services (supporting Rails, Rack, Sinatra, etc), to also expose other enterprise-grade services to Ruby applications
- H2O
An optimized HTTP/1, HTTP/2 server. H2O supports Rack interface for MRuby
trinidad
Run Rails or Rack applications within an embedded Apache Tomcat container
Grack
GIt Smart HTTP Server Rack Implementation. This project aims to replace the builtin git-http-backend CGI handler distributed with C Git with a Rack application. This reason for doing this is to allow far more webservers to be able to handle Git smart http requests. Grack inspired and
Frameworks
hobbit-contrib
Contributed Hobbit extensions. For examples: , , , - render using , ,
hat
Hobby Application Template. Combinded with i18n, rack-protection, sprockets, tilt, better_erros, rack-test, minitest and so on
- The Guide to Cuba
following this small book to build a Twitter clone called Frogger (work in progress)
- RESTRack-Client
A library for interacting with RESTRack based services, although it provides a convenient API to any RESTful service
- RESTRack-Balancer
A library for interacting with RESTful web services with automatic load balancing across a cluster
- RESTRack-Splitter
A library for interacting with RESTful web services with automatic distribution across multiple nodes of a cluster
Gris
A framework for building hypermedia API services using Grape, Roar and ActiveRecord
awesome-hanami
A collection of awesome Hanami Gems and projects
ramaze-book
The official book for the Ramaze web framework
sinatra-contrib
Collection of common Sinatra extensions
sinatra-receipes
Community contributed recipes and techniques for the Sinatra Web Framework
sinatra-book
A cookbook full of excellent tutorials and recipes for developing Sinatra web applications
- Frameworks inspired by Sinatra on Wikipedia
e.g.: Ruby (Padrino, Nancy), PHP (Slim, deano), JavaScript (Express), CoffeeScript (Zappa), Python (Flask), Go (Martini, Goji), Scala (Finatra, Scaltra), Java (Spark), Haskell (Scotty), Bash (sh.inatra), Lua (Orbit, Mercury), Perl (Dancer)
padrino-contrib
Contributed plugins and utilities for Padrino Framework
padrino-recipes
A collection of padrino templates and plugins
Middlewares
- http://localhost:9292/passwd
serves files below the root directory given, according to the path info of the Rack request. e.g. when Rack::File.new("/etc") is used, you can access 'passwd' file as
- Rack::Cache
is suitable as a quick drop-in component to enable HTTP caching
- Rack::ESI
is a small (but still very useful!) subset of ESI (Edge Side Includes)
- CloudKit
includes OpenIDFilter, OAuthFilter, and RESTful JSON storage
- Rack::Config
Shared configuration for cooperative middleware
- Rack::OpenID
provides a more HTTPish API around the ruby-openid library
- Rack::RespondTo
allows triggering different actions based on requested media type
- Rack::SupportedMediaTypes
specify an app's supported media types
- Rack::AcceptMediaTypes
determine the request's prefered media type
- Rack::MultipartRelated
parses multipart/related requests and rebuild a simple/merged parameters hash
Rack::Heartbeat
Add a configurable heartbeat/health-check/ping url to your app
- Rack::Honeypot
acts as a spam trap
- Rack::GoogleAnalytics
embeds Google Analytics tracking code
- Rack::Embed
embeds small images via the data-url (base64) if the browser supports it. This reduces http traffic
- Warden
General Rack Authentication Framework
- Rack::StaticFallback
bounces or redirects requests to missing static files
- Rack::Throttle
provides logic for rate-limiting incoming HTTP requests to Rack applications
Rack::LinkedData
implements Linked Data content negotiation
Cylon
Disallows application indexation by search engines except in production. Rack Middleware and Rails Engine
Slogger::Rack::RequestLogger
if you want to log on Syslog
Rack::Batik::SVG
transcodes SVG pictures to JPEG
Rack::Referrals
extracts referring search engine info
Muster
parses some or all of the query string in varying formats into hashes. Helps adding human friendly (not rack/rails nested) query string options to APIs and such
Moneta
adds Rack::MonetaStore (places key/value store in env, support for per-request caching), Rack::MonetaCookies (allow Moneta to be used to store cookies) and Rack::MonetaRest (expose a key/value store via HTTP/REST)
RouteDowncaser
makes all routing in Rails case-insensitive
- Rack::CanIUse
checks if user agents support the HTML/CSS technologies used by your website using the CanIUse database
Rack::Attack
A DSL for blocking & throttling abusive clients
ChromeLogger
A Ruby library that implements the spec as Rack middleware
Rack::DetectTor
Detect Tor exit users
- Rack::RackTorBlock
Block access to a rack application from any client accessing from the Tor network
Rack::Turnout
Easily put your Rack apps into maintenance mode
Rack::CAS
Simple CAS client authentication
Rack::AcornCache
Configurable HTTP proxy caching solution
Rack built-in middlewares
from - High performant source reloader
Shotgun
An automatic reloading version of the command that's shipped with Rack
rack-unreloader
A rack library that reloads application files when it detects changes, unloading constants defined in those files before reloading
guard-rack
Restart Rack when files change
- Rail's ActionController Middleware Stack
from - Provides prepare and cleanup callbacks, intended to assist with code reloading during development
rack-livereload
Bring in livereload.js into handy Rack middleware
guard-livereload
automatically reload your browser when 'view' files are modified
Rack built-in middlewares
and from - HTTP Basic Authentication and HTTP Digest Authentication
Warden
General Rack Authentication Framework
Devise
A flexible authentication solution for Rails based on Warden. A complete MVC solution based on Rails engines
OmniAuth
A flexible authentication system utilizing Rack middleware
rack-oauth2
OAuth 2.0 Server & Client Library. Both Bearer and MAC token type are supported
Rack::OAuth2::Server
OAuth 2.0 Authorization Server as a Rack module. Supports Sinatra and Rails
rack-openid
Provides a more HTTPish API around the library
rack-jwt-token-auth
JWT-based token authentication middleware for Rack
Shield
Authentication protocol for use in your routing and model context (~ 110 LOC)
sinatra_auth_github
A sinatra extension that provides oauth authentication to github. See Scott Chacon's for a demostration
- Rack::FacebookConnect
A Rack middleware for Facebook Connect authentication
Rack::Cerberus
Rack middleware for form-based authentication. It works roughly like Basic HTTP authentication except that you can use options in order to style the authentication page
hancock
An OpenID based Single Sign On server with a simple API, written in Sinatra
Middlewares / hancock
hancock-client
A sinatra app and rack middleware piece for the hancock SSO server
Middlewares
Middlewares / CASino
CASinoApp
Ready to use CAS server based on CASino Rails Engine
Middlewares
OmniAuth
A flexible authentication system utilizing Rack middleware
Sprockets
Sprockets is a Ruby library for compiling and serving web assets. It features declarative dependency management for JavaScript and CSS assets, as well as a powerful preprocessor pipeline that allows you to write assets in languages like CoffeeScript, Sass and SCSS
rack-sprocketize
a piece of Rack Middleware which uses Sprockets to concatenate javascript files and then optionally compresses them
rack-pack
A piece of Rack Middleware that packages and optionally compresses assets such as javascripts and stylesheets into single files
Rack Pipeline
A rack middleware to serve javascript and stylesheet assets for ruby web applications
rack-coffee
Simple rack middleware for serving up files as compiled javascript
rack-bundle
A Rack middleware for grouping Javascripts and stylesheets into one single file (styles are grouped by media type)
rack-zippy
A Rack middleware for serving static gzipped assets precompiled by the Rails (4.1 and earlier) asset pipeline into the public/assets directory
- Hork
Rack middleware for transparently compressing JavaScript and CSS assets with the YUI Compressor
Sinatra AssetPack
The most convenient way to manage your assets in Sinatra
rack-asset-compiler
Rack middleware that provides a generic interface for compiling static files, such as Sass or CoffeeScript files
Rack::Cat
A Rack middleware to concatenate your assets (static, dynamic and remote) and serve javascripts and stylesheets faster
Rack::Pack
for packaging assets such as javascripts and stylesheets into a single file
rack-protection
This gem protects against typical web attacks. Prevented Attacks includes , , , , , . Note: This project has been merged upstream to sinatra/sinatra
rack-attack
Rack middleware for blocking & throttling abusive requests. It allows whitelisting, blacklisting, throttling, and tracking based on arbitrary properties of the request
rack-block
A rack middleware for controlling accesses by search bot or not, remote ip address, etc
- rack-tor-block
A rack middleware to block accesses to your rails application from TOR nodes. Inspired by
Rail's ActionController Middleware Stack
from - Checks for IP spoofing attacks
Rack::Throttle
provides logic for rate-limiting incoming HTTP requests to Rack applications
Alpaca
allows developers to quickly and easily configure and manage a whitelist and/or blacklist
Rack TCTP
middleware for enabling end-to-end security using the Trusted Cloud Transfer Protocol (TCTP)
faye-websocket-ruby
Standards-compliant WebSocket client and server. A general-purpose WebSocket implementation extracted from the project
websocket-rack
Rack-based WebSocket server
SinatraWebsocket
Makes it easy to upgrade any request to a websocket connection in Sinatra
- seojs-ruby
Rack middleware to integrate SEO.js to your Rails or Sinatra app. SEO.js makes your BackboneJS, AngularJS or EmberJS apps crawlable by Google to make them appear in search results
Rack SEO
Generate SEO friendly meta tags on the fly using Rack Middleware
rack-pygmentize
use the generic syntax highlighter Pygments library to make your code look pretty!
rack-flash
Simple flash hash implementation for Rack apps
sinatra-flash
An implementation of show-'em-once 'flash' messages for the Sinatra Web framework. (~ 50 LOC, note this is not a middleware.)
rack-emstream
Simple middleware for streaming with EventMachine-capable servers
sc
If static site generators were vegies, this one would be a pickle
machined
A static site generator and Rack server built using Sprockets 2.0
rack-jekyll
Transform your app into Rack application
Middleman
A static site generator using all the shortcuts and tools in modern web development. You can use Rack middlewares to modify content on-the-fly and intercept requests before they are processed by the server (Middleman). Middleman itslef has Rack middlewares to minify CSS and JavaScript files
Brochure
Rack application for serving static sites with ERB templates (or any of the many template languages supported by Tilt)
Marley
A minimal blog engine without admin interface written in Sinatra framework. Use Rack::Auth::Basic to provide authentication
rack-ssl
Rack middleware to force SSL
rack-ssl-enforcer
A simple Rack middleware to enforce ssl connections
rack-ssl-rails
A simple interface to for Rails. Provides a railtie for use with rack-ssl
heroku-rack-ssl-enforcer-rails
Enforce SSL on Rails application on Heroku
- Firehose
Firehose is both a Rack application and JavaScript library that makes building real-time web applications possible
rack-capabilities
Discover just what rack can do (rather, what middleware you have installed)
rack-legacy
Run legacy environments like CGI and PHP under any rack server
Rack::Recaptcha
Drop this Rack middleware in your web application to enable CAPTCHA verification via Recaptcha API
Rack::Tunnel
Automatic port forwading via SSH tunneling
Rack::Mux
Multiplex multiple rack servers to the same app
Rack::UserAgent::Filter
Rack Middleware for filtering by user agent
Rack::RevisionInfo
Rack middleware showing current git (or svn) revision number of deployed application
Rack::Health
A health check interface for rack applications
Rack::Store
A Rack middleware what makes the env accessible anywhere while a request
Rack::Plastic
Helps you changing the HTML using Nokogiri
Rack::ToolBar
Allows you to create simple Rack Middleware that will insert HTML (or whatever!) into responses at specific points
Rack::Gsub
A Rack middleware wrapper for gsub
Rack::Codehighlighter
A middleware which allows for easy connecting a code highlighter of somebody's choice to an HTML page containing pieces of programming code
Rack::JQuery
jQuery CDN script tags and fallback in one neat package
- Rack::JQueryUI
jQuery-UI CDN script tags and fallback in one neat package
Rack::JQueryUI::Themes
jQuery-UI themes CDN script tags and fallback in one neat package
Rack::Backbone
Backbone.js CDN script tags and fallback in one neat package
Rack::Polymer
Polymer CDN script tags and fallback in one neat package. Polymer leverages web components, a new set of standards designed to provide reusable components for the web
Rack::Stream
A middleware for building multi-protocol streaming rack endpoints. It's also a simple Stream DSL
Rack::StreamingProxy
A transparent streaming proxy to be used as rack middleware. Streaming proxy for Rack, the rainbows to Rack::Proxy's unicorn
Pusher
A Rack middleware that implement Ajax Push aka Comet
Robocop
a simple Rack middleware that inserts the X-Robots-Tag into the headers of all your responses
Rack::Geoip
A rack middleware component that handles simple geoip lookups
Rack::GeoIPCountry
uses the geoip gem and the GeoIP database to lookup the country of a request by its IP address
committee
A collection of Rack middleware to support JSON Schema
rack-async-stream
A asynchronous stream middleware based on EventMachine
Helpers and Tools
Miscellaneous
Faraday
Faraday is an HTTP client lib that provides a common interface over many adapters (such as Net::HTTP) and embraces the concept of Rack middleware when processing the request/response cycle
rack-client
A HTTP client that aims to be a good Rack citizen
rack-api
Create web app APIs that respond to one or more formats using an elegant DSL
weary
A framework and DSL for building RESTful web service clients. Full Rack integration
rest-core
Modular Ruby clients interface for REST APIs. rest-core consists of composable middleware that allows you to build a REST client for any REST API. Or in the case of common APIs such as Facebook, Github, and Twitter, you can simply use the dedicated clients provided by . See the slide for more info
- speakdeck
the slide is available on
Nothing in this list matches your filter.
Featured in 2 awesome lists
Each link jumps to the spot where the list mentions awesome-rack.