Awesome Lists

awesome-rack

by coopermaa

awesome listpushed over 9 years ago

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
View on GitHub

Embed the badge

Show how many awesome lists link to your project. The count updates automatically.

Awesome Lists badge
Markdown
[![Awesome Lists Badge](https://awesome.facts.dev/shield/coopermaa/awesome-rack/links.svg)](https://awesome.facts.dev/awesome/coopermaa/awesome-rack)
HTML
<a href="https://awesome.facts.dev/awesome/coopermaa/awesome-rack"><img src="https://awesome.facts.dev/shield/coopermaa/awesome-rack/links.svg" alt="Awesome Lists Badge" /></a>
Image URL
https://awesome.facts.dev/shield/coopermaa/awesome-rack/links.svg

What's in the list

280 links in 21 sections, with live GitHub stats.activeno commit in 2y

General

Tutorials

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

Videos

Videos / Getting Started with Rack by Salma Urmi

Videos

Videos / Rack Middleware as a General Purpose Abstraction by Mitchell Hashimoto

Videos

Videos / RailsConf 2014 - Rack::Attack: Protect your app with this one weird gem! byAaron Suggs

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)

  • Heroku Bouncer

    Rack middleware (implemented in Sinatra) that requires Heroku OAuth on all requests

  • 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

  • ntlm-sso

    Rack authentication module for single sign on via NTLM. Note this is not a middleware

  • CASino

    Ruby-based Single Sign-On solution supporting the CAS standard. Note this is not a middleware

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

More related projects

Add a GitHub project

Missing a project or an awesome list? Paste its GitHub URL and we fetch it right away.