Ruby Compendium - What you can use for...

You could spend hours on the RubyGems web site to find what you’re looking for sometimes. Not because you can’t find it, but because often there are too many alternative libraries that overlap in terms of functionalities offered.

A site to check when you don’t know much of what has been done in a particular domain is The Ruby Toolbox, which organizes quite a lot of gems into categories. This section is somewhat similar, but it focuses on just a few common tasks and a small set of hand-picked gems.

Command Line Applications

cmdparse

“cmdparse provides classes for parsing commands on the command line; command line options are parsed using optparse or any other option parser implementation.”

gli

“An application and API for describing command line interfaces that can be used to quickly create a shell for executing command-line tasks.”

highline

“A high-level IO library that provides validation, type conversion, and more for command-line interfaces. HighLine also includes a complete menu system that can crank out anything from simple list selection to complete shells with just minutes of work.”

hirb

“A mini view framework for console/irb that’s easy to use, even while under its influence. Console goodies include a no-wrap table, auto-pager, tree and menu”

Documentation

glyph

“Glyph is a framework for structured document authoring.”

rdoc

“RDoc produces HTML and online documentation for Ruby projects. RDoc includes the rdoc and ri tools for generating and displaying online documentation.”

yard

YARD is a documentation generation tool for the Ruby programming language. It enables the user to generate consistent, usable documentation that can be exported to a number of formats very easily, and also supports extending for custom Ruby constructs such as custom class level definitions.”

Gem Management

bundler

“Bundler manages an application’s dependencies through its entire life, across many machines, systematically and repeatably.”

jeweler

“Simple and opinionated helper for creating Rubygem projects on GitHub”

bones

“Mr Bones is a handy tool that creates new projects from a code skeleton.”

GUI Programming

bowline

“Ruby/JS GUI framework”

fxruby

“FXRuby is the Ruby binding to the FOX GUI toolkit”

wxruby

“wxRuby allows the creation of graphical user interface (GUI) applications via the wxWidgets library. wxRuby provides native-style GUI windows, dialogs and controls on platforms including Windows, OS X and Linux.”

qtruby4

“Qt4 Bindings for Ruby.”

rugui

“RuGUI is a framework which aims to help building desktop applications. RuGUI was mostly inspired by the Ruby on Rails framework, taking most of its features from it.”

Markup and Template Languages

bluecloth

“BlueCloth is a Ruby implementation of Markdown, a text-to-HTML conversion tool for web writers. To quote from the project page: Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).”

github-markup

“This gem is used by GitHub to render any fancy markup such as Markdown, Textile, Org-Mode, etc. Fork it and add your own!”

haml

“Haml (HTML Abstraction Markup Language) is a layer on top of XHTML or XML that’s designed to express the structure of XHTML or XML documents in a non-repetitive, elegant, easy way, using indentation rather than closing tags and allowing Ruby to be embedded with ease. It was originally envisioned as a plugin for Ruby on Rails, but it can function as a stand-alone templating engine.”

liquid

“A secure, non-evaling end user template engine with aesthetic markup.”

mustache

"Inspired by ctemplate, Mustache is a framework-agnostic way to render logic-free views. As ctemplates says, “It emphasizes separating logic from presentation: it is impossible to embed application logic in this template language. Think of Mustache as a replacement for your views. Instead of views consisting of ERB or HAML with random helpers and arbitrary logic, your views are broken into two parts: a Ruby class and an HTML template.”

rdiscount

“Fast Implementation of Gruber’s Markdown in C”

redcloth

“RedCloth is a Ruby library for converting Textile into HTML.”

Static Web Site Generators

jekyll

“Jekyll is a simple, blog aware, static site generator.”

nanoc

“a web publishing system written in Ruby for building small to medium-sized websites.”

toto

“the tiniest blog-engine in Oz.”

webby

“Webby is a fantastic little website management system. It would be called a content management system if it were a bigger kid. But, it’s just a runt with a special knack for transforming text. And that’s really all it does – manages the legwork of turning text into something else, an ASCII Alchemist if you will.”

Testing

bacon

“Bacon is a small RSpec clone weighing less than 350 LoC but nevertheless providing all essential features.”

cucumber

“Behaviour Driven Development with elegance and joy”

minitest

“minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking. minitest/unit is a small and incredibly fast unit testing framework.”

rspec

“RSpec is a Behaviour-Driven Development tool for Ruby programmers. BDD is an approach to software development that combines Test-Driven Development, Domain Driven Design, and Acceptance Test-Driven Planning. RSpec helps you do the TDD part of that equation, focusing on the documentation and design aspects of TDD.”

shoulda

“Making tests easy on the fingers and eyes”

Web Development

rails

“Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration.”

sinatra

“Classy web-development dressed in a DSL

padrino-framework

“The Godfather of Sinatra provides a full-stack agnostic framework on top of Sinatra”

merb-core

“Merb. Pocket rocket web framework.”

ramaze

“Ramaze is a simple and modular web framework”

camping

“miniature rails for stay-at-home moms”

Web and App Servers

passenger

“Easy and robust Ruby web application deployment.”

rack

“Rack provides a minimal interface between webservers supporting Ruby and Ruby frameworks.”

thin

“A thin and fast web server”

unicorn

“Unicorn is an HTTP server for Rack applications designed to only serve fast clients on low-latency, high-bandwidth connections and take advantage of features in Unix/Unix-like kernels.”

XML Parsing

hpricot

“a swift, liberal HTML parser with a fantastic library”

nokogiri

“An HTML, XML, SAX, & Reader parser with the ability to search documents via XPath or CSS3 selectors… and much more”

xml-simple

“A simple API for XML processing.”