Ruby

Ruby

Introduction

The following page is dedicated to information about the Ruby programming language and all things related to it. This page was assembled with help from Brant.

Getting Started

  1. Intro to Ruby - A series of posts that teaches you what Ruby is, how to configure it for your development environment, and how to use the language (code samples are included and available for download as well).
  2. Ruby on Rails Tutorials - A rather extensive list of tutorials to help get you started with the Ruby on Rails web framework.
  3. Ruby on Rails Tutorial - Provides both a digital book and screencast resource for learning the Ruby on Rails framework.

Tips and Tricks

Documentation

API

  • Ruby Docs - Additional Ruby documentation and resources.
  • Ruby Core API
  • Ruby Standard API
  • API Doc - Provides quick keyword search capabilities as well as community comments for Ruby and Ruby on Rails.
  • Got API - An alternative to API Doc but not as easy on the eyes. Depends on your temperament, of course.
  • Ruby on Rails API
  • RailsBrain - Provides a faster way of navigating the Ruby on Rails API.
  • Noobit - A central source for Ruby, Ruby on Rails, and Ruby Gems documentation.
  • Rdoc Info - Documentation for open source projects as found on GitHub.

For those into Rails, more information can be found on The Ruby on Rails Link Library site.

Tutorials

  • Railscasts - Short screen cast tutorials of Ruby on Rails code.
  • Envy Casts - Produced by the same guys that host the Rails Envy podcasts. Each screen cast tutorial will set you back about $9.
  • PeepCode - Screencast tutorials like Railscasts but longer in length and not free (roughly $9 per episode).
  • Tekniqal - A collection of screencasts that cover some of the Ruby basics.
  • Scaling Rails - A series of screencasts on detailing how to scale your Ruby on Rails application appropriately. Produced by Gregg Pollack of Envy Cast fame.
  • BDD Casts - Video tutorials on all things related to Behavior Driven Development.

News

  • A Fresh Cup - My personal favorite. While you can find similar news via the links below, Mike Gunderloy does an excellent job of summing everything up in place for news, information, and new gems from the Ruby community.
  • Ruby Toolbox - A great trending site for finding out what gems are hot and most popular within the Ruby community. This can save you a lot of time when you want to know which gem is the best solution for a problem that has already been solved.
  • Ruby Trends - Another trending site. Useful for cross-checking against Ruby Toolbox on what is hot.
  • Ruby News - Straight from the source. Find about new releases, conferences, developments, etc.
  • Ruby Inside - The inside scoop on Ruby news.
  • RubyFlow - A great site for picking up new resources to add to your development repertoire.
  • RubyFu - Useful quick news and resource links.
  • Ruby Best Practices - A great source of thoughtful discussion, including code samples, on how to write better code.
  • Ruby5 - From some of the same guys who provide the Rails Envy podcast below. This is another podcast on Ruby news but in short, 5-minute, segments of usually discussing many of the new and interesting gems being developed.
  • Rails Inside - Get the inside scoop on Rails news.
  • Riding Rails - Learn what is happening with the Ruby on Rails team.
  • Rails Spikes - A multi-authored site of Ruby developers discussing news, tips, code, etc.
  • Rails Illustrated - Info on Rails, web design, and the user experience.
  • Rails Notes - Another site worth checking out and picking up new learning.
  • Rails Tips - As the site description goes: “One man, feverishly posting everything he learns.”
  • The Rails Way - News and information dedicated to teaching best practices of Ruby on Rails.
  • Ruby on Rails Security Project - A good place to read up on security issues or at least keep your mind in it.
  • Giant Robots Smashing Into Other Giant Robots - Good development tips and tricks, mostly related to Rails.
  • Ryan’s Scraps - Interesting news on what’s new and upcoming within the Rails code base. Includes code samples and detailed descriptions and examples of new Rails features.
  • Has Many Through - Although he has a low writing frequency, the posts are enlightening.
  • Rails Envy - An entertaining and informative weekly podcast dedicated to Ruby, Rails, and web framework news.
  • Rails Podcasts - Ruby/Rails podcasts by Geoffrey Grosenbach of PeepCode fame.
  • Rails Magazine - News, articles, and information about the Ruby on Rails framework.

Mailing Lists

Communities

  • Act as Community - Nice site design but slow to use. Not sure if it is a Rails problem or a hosting problem. I am member as well.

Books

Tools

Gems

Ruby Gems allow one to discover and install additional packages that do not come standard with the base Ruby distribution. NOTE: If you are having trouble installing RubyGems 1.3.0 on MacOS 10.5.4, this might help. Here are a few worth considering:

  • Gembox - “Gembox is a very simple web based application for browsing your local ruby gems.”
  • Ruby Version Manager - An easy and awesome way to manage multiple Ruby versions on the same system.
  • Bundler - “Bundler is a tool that manages gem dependencies for your ruby application. It takes a gem manifest file and is able to fetch, download, and install the gems and all child dependencies specified in this manifest. It can manage any update to the gem manifest file and update the bundle’s gems accordingly. It also lets you run any ruby code in context of the bundle’s gem environment.”
  • Hirb - A mini IRB framework including no-wrap table, auto-pager, tree and menu.
  • Wirble - Colorizes the IRB amongst other things.
  • Looksee - “Examine the precise method lookup path of any ruby object in ways not possible in standard ruby.”
  • Echoe - A simple and easy to use gem builder tool for creating your own Ruby Gems.
  • Jeweler - Makes managing and building your Ruby Gems easier. Learn how to craft the perfect gem with Jeweler.
  • RSpec- A Behavior Driven Design (BDD) testing framework for Ruby and other languages. Can also be used as a plugin to Rails. For MacOS users, check out RSpactor as a app for automatically monitoring and running your RSpec tests.
  • Remarkable - Makes building RSpec tests easier.
  • Cucumber - An add-on to RSpec that supports story testing. Learn how to get started: Part 1 and Part 2.
  • Pickle - “Easy model creation/reference in cucumber - optionally leveraging your factories/blueprints.”
  • Launchy - “A helper for launching cross-platform applications in a fire and forget manner.”
  • Mocha - A mocking and stubbing library. Works with many of the other testing frameworks out there. Can be installed as a Rails plugin as well.
  • Machinist - Easily generate test data rather than deal with fixtures.
  • Webrat - Allows you to write robust and easy web acceptance testing.
  • Mechanize - “The Mechanize library is used for automating interaction with websites. Mechanize automatically stores and sends cookies, follows redirects, can follow links, and submit forms. Form fields can be populated and submitted. Mechanize also keeps track of the sites that you have visited as a history.”
  • FakeWeb - “A helper for faking web requests in Ruby. It works at a global level, without modifying code or writing extensive stubs.”
  • Watchr - “Modern continuous testing (flexible alternative to Autotest).”
  • ZenTest - An auto-tester that works with RSpec.
  • Autotest Fsevent - A Mac-friendly auto-tester.
  • Roodi - A code cleanup tool that warns and/or questions your code.
  • Flog - Uses ABC metrics to analyze the complexity of your code.
  • rcov - A code coverage tool that can also generate HTML charts.
  • reek - “A tool that examines Ruby classes, modules and methods and reports any code smells it finds.”
  • Towelie - Identifies code duplication to help keep code DRY.
  • Flay - Similar to Towelie and possible better in coverage but not as easy to read the output it generates.
  • Capistrano - One of the first tools to automate the deployment of web applications.
  • Vlad the Deployer - Programmatic application deployment.
  • Moonshine - “Rails deployment and configuration management done right. ShadowPuppet + Capistrano == crazy delicious.” Here are some details for a Ubuntu setup.
  • Facets - What you can’t find in the base Ruby library you might find with this gem.
  • Ruby on Rails - A database supported framework for web application development using the Ruby language.
  • Merb - A MVC like Rails but faster, more abstract, and lightweight.
  • Rack - A modular web server interface for Ruby programs (in case you wanted an alternative to Ruby on Rails). Get introduced, watch a few screencasts, and check out 32 links that will help you get started.
  • Rack Cache - “A quick drop-in component to enable HTTP caching for Rack-based applications that produce freshness (Expires, Cache-Control) and/or validation (Last-Modified, ETag) information.”
  • SQLite3 - Adds Ruby support for the SQLite3 database. To install type: sudo gem install sqlite3-ruby.
  • MySQL - Adds Ruby support for the MySQL database. To install (MacOS) type: sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config.
  • Oracle Enhanced Adapter - Enhanced adapter for Oracle databases with additional configuration options.
  • Feed-Normalizer - Normalizes any RSS feed so that you can access from a generic class.
  • Ferret - Inspired by the Apache Lucene project, Ferret is a text search engine for Ruby.
  • Picolena - A Ferret-power document search engine that claims to be lightweight and speedy.
  • Active Merchant - Originally developed for Shopify, it adds financial processing to Ruby and/or Rails applications.
  • Active Shipping - A shipping API extension to Active Merchant.
  • Active Record Extensions - Adds functionality and performance enhancements to Active Record.
  • Sortable - Enables sorting of ActiveRecords in multiple lists and scopes.
  • Ancestry - “Organize ActiveRecord model into a tree structure.”
  • Acts as State Machine (AASM) - One of the more popular state machines.
  • Alter Ego - An implementation of the Gang-of-Four’s state pattern.
  • Acts as List - Allows records to be sorted and organized as lists.
  • Acts as Commentable - Allows for comments to be easily added to different models.
  • Couch Foo - Provides an ActiveRecord API interface to CouchDB.
  • Ruby OSA - Enables Ruby programs to manipulate MacOS applications in much the same fashion as AppleScript.
  • AppScript - “Appscript is a high-level, user-friendly Apple event bridge that allows you to control scriptable Mac OS X applications from Python, Ruby and Objective-C.”
  • GPS Receiver Reader - Use this to interpret GPS data.
  • libxml - An XML parsing library that claims to be fast and feature rich. Read about resurrecting libxml-ruby to learn more.
  • Hpricot - An HTML parser for Ruby.
  • Nokogirl - Another HTML/XML parser. Claims to be fast.
  • Hoshi - Makes creating HTML/XHTML/XML views easier.
  • MMS2R - “A library that decodes the parts of an MMS message to disk while stripping out advertising injected by the mobile/cellphone carriers.”
  • Pool Party - “An open source tool that automates deployment, monitoring, and load balancing of [Amazon] EC2 instances.”
  • SOAP4R - The SOAP implementation for Ruby. You can get started here.
  • Handsoap - A library for creating SOAP clients.
  • BackgroundDRb - A Ruby job server and scheduler for running background tasks asynchronously. Warning: This is heavyweight, error prone, and not that easy to use.
  • Daemon Controller - A library for managing daemon threads.
  • DataFlow - A gem for managing thread concurrency.
  • HTTParty - A convenience library for modeling response objects such as JSON, XML, etc. Read more about it if you like.
  • JSON - A JSON data wrapper that can be parsed as a Ruby object.
  • Siren - “JSON parser that understands cross-references and casts to typed Ruby objects. Implements JSONQuery against JSON trees and Ruby object graphs.”
  • PDF Writer - A library with some excellent documentation for generating PDF documents. Check out Railscast, Episode 78 to learn more.
  • Prawn - A library for generating PDF documents. Check out the prawnto plugin and Railscast 153 for more info.
  • wkhtmltopdf - Converts HTML documents to PDF.
  • Config Toolkit - Makes parsing configuration files easy in Ruby.
  • Configatron - Similar in nature to the System Settings plugin for Rails, this makes configuring/customizing your app easier. Developed by the same guy responsible for the Mack framework. Check out this tutorial for getting started.
  • Adhearsion - A VoIP library.
  • NeverBlock - Built upon Ruby 1.9, NeverBlock allows one to write transparent, non-blocking, concurrent code.
  • Doodle - A library that simplifies the definition of Ruby classes by making attributes and their properties more declarative.
  • Markaby (a.k.a. Markup as Ruby) - Allows you to write Ruby code to easily generate HTML without having to mess with the HTML syntax. Can also be installed as a plugin to Rails.
  • Erector - “Erector is a Builder-like view framework, inspired by Markaby but overcoming some of its flaws.”
  • RedCloth - A module that adds Textile capabilities to Ruby for writing semi-static pages that need HTML syntax but where you don’t want to actually write in HTML.
  • BlueCloth - Similar in capability to RedCloth but uses Markdown syntax.
  • Rote - “Rote is a simple page-based template system that was written to make it easier to author and maintain non-dynamic websites and offline documentation. Rote provides a simple command line or Rake based build for your pages, with page rendering (optionally supporting RDoc formatting, Textile and Markdown with RedCloth and ruby code with ERB), layout, and general documentation / website build tasks.”
  • Webby - A simple and tiny content management system for your web app (well, sort of). Follow the link to learn more.
  • WeatherMan - Encapsulates the XML API from weather.com so that you can easily manipulate the data.
  • RMagic - A Ruby interface to the ImageMagick and GraphicsMagick image processing libraries. In order to install RMagic one of those image process libraries must be installed and configured first. Try installing ImageMagick from source first. Then type the following to install the gem: sudo gem install rmagick.
  • MagickWand - “An interface between the Ruby programming language and the ImageMagick image processing library.”
  • FFMPEG-Ruby - A Ruby wrapper to the C-library for dealing with video files.
  • Vimeo - A full-featured ruby interface for the Vimeo API.
  • Chronic - A natural language time parser. The only problem is that it doesn’t support time zones at the moment but is planned as a future enhancement.
  • Briad - A simple tool for tracking SVN and GIT repository branches.
  • Garlic - Lightweight continuous integration for rails using git.
  • Pony - A lightweight and quick way to send e-mail with just one command.
  • Blackbook - A contact importer/exporter for various social services like Hotmail, Gmail, etc. Supports exporting capabilities for hashes, vCards, and XML.
  • Asset Copier - An asset copier for your Rails plugins.
  • GeoKit - Provides the ability to calculate distance, compute lat/long on a model, compute lat/long from a snail address, and much more.
  • GeoIP - “The Ruby gem for querying Maxmind.com’s GeoIP database, which returns the geographic location of a server given its IP address.”
  • Simple Geo - A Ruby client for the Simple Geo API.
  • Strongbox - Uses public key encryption to secure ActiveRecord attributes.
  • attr_encrypted - Encrypt and decrypt attributes transparently.
  • hattr_accessor - Allows one to define accessors that reference members of a hash.
  • Twitter - Manipulate your Twitter data. Has identi.ca support as well. To learn more, go here.
  • twitter2rss - “Read your twitter feed, including direct messages and malformed @replies, via RSS.”
  • TwitterAuth - A full authentication stack for integrating Twitter with your Rails app using both OAuth and HTTP Basic authentication. Read more here.
  • Daemon Kit - A gem for creating daemon skeletons along with rake tasks for management of your daemons. Here is a guide on handling cronjobs too.
  • Resume2 - Provides a command line tool for managing your resume from a central YAML file.
  • Jekyll - A blog-aware, static site generator.
  • authlogic - One of the better authentication systems with lots of flexibility. Check out the tutorials to get started.
  • Devise - “A flexible authentication solution for Rails with Warden.”
  • Clearance - Developed by thoughbot, it adds authentication and authentication testing to your Rails app.
  • Declarative Authorization - “User authorization rules are not defined programmatically in between business logic but in an authorization configuration.”
  • CanCan - “This is a simple authorization solution for Ruby on Rails to restrict what a given user is allowed to access in the application. This is completely decoupled from any role based implementation allowing you to define user roles the way you want. All permissions are stored in a single location for convenience.”
  • Rufus Scheduler - A cron-like date/time scheduler. Can also be tailed for use in a Rails app. Learn more here.
  • Titleizer - Smarter capitalization for titles.
  • Encryptor - “A simple wrapper for the standard ruby OpenSSL library.”
  • Sprockets - “Sprockets is a Ruby library that preprocesses and concatenates JavaScript source files. It takes any number of source files and preprocesses them line-by-line in order to build a single concatenation.”
  • Jammit - “An industrial strength asset packaging library for Rails, providing both the CSS and JavaScript concatenation and compression that you’d expect, as well as YUI Compressor and Closure Compiler compatibility, ahead-of-time gzipping, built-in JavaScript template support, and optional Data-URI/MHTML image embedding.”
  • Sprinkle - A software provisioning tool for building a Ruby stack on a slice in a quick and easy fashion. For example, check out the Passenger-Stack script.
  • Feedzirra - “A feed fetching and parsing library that treats the internet like Godzilla treats Japan: it dominates and eats all.”
  • is_taggable - A simple tagging solution.
  • Acts as Taggable On - Adds tagging capabilities to ActiveRecords.
  • timeline_fu - Easily build timelines.
  • Scruffy - A library for generating graphs and visualization of data using SVG.
  • Seer - “A lightweight, semantically rich wrapper for the Google Visualization API. It allows you to easily create a visualization of data in a variety of formats, including area charts, bar charts, column charts, gauges, line charts, and pie charts.” More info here.
  • DataFabric - Enabled ActiveRecord database connections to be sharded.
  • Infuse - “Create HTML slide shows with a simple DSL.”
  • Formtastic - A Rails form builder plugin with semantically rich and accessible markup.
  • Scrooge - An ActiveRecord query optimizer.
  • Git Remote Branch - Easily manage remote branches with Git.
  • Ghost - Allows you to create, list, and modify host names with ease.
  • Lockdown - An authorization system for Ruby on Rails.
  • Radarb - A ruby gem that makes using the http://outside.in API simple.
  • CloudKit - “CloudKit provides schema-free, auto-versioned, RESTful JSON storage with optional OpenID and OAuth support, including OAuth Discovery.”
  • Sanitize - A whitelist-based Ruby HTML sanitizer.
  • Integrity - A continuous integration server. Learn more.
  • Open Social - Allows you to work with Google OpenSocial data on your server.
  • ChocTop - Packages and deploys any Cocoa application in a custom DMG, with generated Sparkle XML support.
  • Taps - A database import/export tool.
  • excelsior - A really fast CSV file reader.
  • Comma - “A small CSV (ie. comma separated values) generation extension for Ruby objects, that lets you seamlessly define a CSV output format via a small DSL”.
  • Whenever - Build UNIX cron jobs easier in Ruby without having to deal with confusing cron syntax.
  • Simple Form - “Simple easy contact form for Rails with I18n, validations, attachments and request information.”
  • Safe - A simple backup solution for mysql and Postgres files.
  • Octopi - A Ruby interface to the GitHub API.
  • Railroad - A class diagram generator for Ruby on Rails apps. It allows you to easily generate diagrams showing your model relationships and attributes (done by analyzing your model associations and migrations).
  • REST Client - A simple REST client.
  • REST - Add one line of code to your controller and, presto, you get all seven REST actions for free. It is also very customizable and unobtrusive.
  • Hammock - “Eliminates redundant code in a very RESTful manner. It does this in lots in lots of different places, but in one manner: it encourages specification in place of implementation. “
  • Described Routes - “Dynamic, framework-neutral metadata describing path/URI structures, with natural translations to/from JSON, YAML and XML.”
  • AndAnd - Allows you to guard against nil values in chained methods.
  • GreenGreen - “A tool for assuring quality metrics of 100% quality.”
  • Nanite - A “self assembling fabric of ruby daemons.”
  • AMPQ - “AMQP client implementation in Ruby/EventMachine.”
  • Semantic Menu - Adds site navigation support to your app.
  • YARD - “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. What’s this mean? It means YARD is a great tool to document applications that make use of DSLs.”
  • Trample - A load simulator for testing how your app holds up against heavy traffic.
  • Sunspot - “All the power of the Solr search engine; all the beauty of Ruby. Sunspot exposes all of Solr’s most powerful search features using an API of elegant DSLs.”
  • Barometer - “A multi API consuming weather forecasting superstar.”
  • Curb Fu - “Simple, yet powerful wrapper for taf2’s curb (libcurl) library.”
  • Externals - “Quickly freeze and unfreeze external git dependencies.”
  • RiCal - An RFC 2445 (iCalendar) for Ruby.
  • SMS on Rails - “Provides an interface and ORM framework for sending and storing SMS messages through Email Gateway or with Clickatell HTTPS.”
  • Active URL - Aids in generating secret URLs which is useful for new user registration.
  • Garb - Provides an API to the Google Analytics service.
  • Google AdWords - “Lets developers design programs that interact directly with the AdWords platform.”
  • Enhanced Select - An enhanced select helper for forms that allows you to use the full HTML spec for select option elements.
  • RIO - A useful Ruby I/O library.
  • Ruby Invoicing Framework - “A collection of tools which provide the basic mechanisms for supporting financial transactions within your own application.”
  • Sumo - Quickly and easily launch EC2 instances.
  • Warp Drive - “Completely bundle up an entire Rails application into a gem, then load it into another application.”
  • Bullet - “Designed to help you increase your application’s performance by reducing the number of queries it makes.”
  • Fog - Makes accessing the cloud a little easier.
  • Deadweight - A CSS coverage tool.
  • Simple Importer - “a simple API for importing CSV files.”
  • Sinatra - An extremely lightweight web framework that can be written up in a single file.
  • Sinatra More - “Provides a suite of helpers and extensions to allow for more complex sinatra apps.”
  • Shotgun - “This is an automatic reloading version of the rackup command that’s shipped with Rack. It can be used as an alternative to the complex reloading logic provided by web frameworks or in environments that don’t support application reloading.”
  • Webbynode Safe - “Simple tool to backup databases (MySQL, PostgreSQL and MongoDB) and filesystem locally or to Amazon S3 (with optional encryption).”
  • WYSIHat Engine - “A Rails engine to help integrate the 37signals WyshiHat rich text editor to your application.”
  • Mongo Mapper - Enables one to model a domain and store it in a Mongo DB.
  • racksh - Provides a console for any Rack based ruby web application.
  • Ruby Best Practices - “A gem to check quality of rails app files according to ihower’s presentation from Kungfu RailsConf in Shanghai China.”
  • Net HTTP Spy - Allows one to inspect the HTTP requests made to a third-party API and see what is happening behind the scenes.
  • Mail Safe - “Provides a safety net while you’re developing an application that uses ActionMailer. It keeps emails from escaping into the wild.”
  • Heroku Asset Packager - Compresses and minifies all CSS and JavaScript for Heroku apps.
  • Gravatarify - Easily adds gravatar support to your Ruby application.
  • Searchlogic - “Searchlogic makes using ActiveRecord named scopes easier and less repetitive.” Includes polymorphic association and Geokit support.
  • Vestal Versions - Adds version tracking to your models by only using one table via polymorphic association.
  • Paper Trail - “Track changes to your models’ data. Good for auditing or versioning.”
  • Versionomy - Provides an easy way to deal with version number strings.
  • Health Monitor - “Monitor individual aspects of your rails application’s health.”
  • Statistics - “An ActiveRecord plugin that makes it easier to do reporting.”
  • Eventful - Additional enhancements beyond what you get with the basic observer capabilities with ActiveRecord.
  • Dry Scaffold - “A Rails scaffold generator that generates DRYer, cleaner, and more useful code.”
  • Composite Primary Keys - One solution for primary keys out of composite keys.
  • Patron - “Patron is a Ruby HTTP client library based on libcurl. It does not try to expose the full “power” (read complexity) of libcurl but instead tries to provide a sane API while taking advantage of libcurl under the hood.”
  • Bowline - Ruby, HTML, and JavaScript framework that allows you to leverage your web knowledge on the desktop.
  • Shipping Logic - “A simple and straight forward interfaces to the various shipping web services: FedEx, UPS, USPS, etc. (Only FedEx is supported at this time).”
  • RCapture - “A Ruby library that allows placing hooks on methods using a convenient interface.
  • Churn - “A project to give the churn file, class, and method for a project for a given checkin Over time the tool adds up the history of chruns to give the number of times a file, class, or method is changing during the life of a project. Churn for files is immediate, but classes and methods requires buildings up a history using churn between revisions. The history is stored in ./tmp “
  • Request Log Analyzer - “A simple command line tool to analyze request log files in various formats to produce a performance report. Its purpose is to find what actions are best candidates for optimization.”
  • Amp - “A general-purpose version-control system. It currently implements Mercurial, and we hope to support git, bazaar, svn, cvs, and darcs in the future.”
  • Rails Best Practices - “A gem to check quality of rails app files according to ihower’s presentation Rails Best Practices from Kungfu RailsConf in Shanghai China.”
  • has_price -”It organizes your price breakdowns and allows for easy retrieval of price subgroups and subtotals, as well as simple serialization for your receipts.”
  • Auto Sprite - Helps manage your images as one sprite file along with CSS generation.
  • Whois - “An intelligent pure Ruby WHOIS client and parser.”
  • Harmony - “Provides a simple DSL to execute javascript + DOM code within ruby.”
  • Holy Grail - “Testing for front-end development; execute browser-less, console-based, javascript + DOM code right from within your Rails test suite.”
  • Observational - “Use the observer pattern to better divide your objects’ responsibilities.”
  • Distance of Time in Words - A more complete and verbose enhancement to the default capabilities found in Rails.
  • Open Gem - Easily open a gem’s source up within your favorite editor.
  • scRUBYt - “A simple but powerful web scraping toolkit.”
  • Scrapi - Another screen scrapping API.
  • Hijack - “Allows you to connect to any ruby process and execute code as if it were a normal irb session.”
  • Cloud Crowd - Enables parallel processing.
  • Vagrant - Automated virtual machine instances via Sun’s VirtualBox software.

Ruby on Rails Plugins

  • ActiveScaffold - Built on top of Rails, it is a scaffolding plugin for quickly generating UI on your models.
  • Streamlined - A scaffolding plug-in for quickly building views.
  • Hobo - A collection of scaffolding plug-ins designed to make generating UI around your models much easier.
  • Flex Scaffold - Allows you to build Flex scaffolding to your RESTful controllers.
  • Typus - Easily adds an admin interface for Ruby on Rails applications. Great looking and easy to use. Great for easily propping up admin interfaces.
  • Annotate Models - “Add a comment summarizing the current schema to the top of each ActiveRecord model source file.”
  • Pacecar - Adds class methods to your models that can reduce writing named scopes as well as work in conjunction with named scopes.
  • ar-extensions - Extends and enhances the default functionality of ActiveRecord such as mass data import and exporting to CVS via the “to_csv” method.
  • Live Validations - “Reads Active Record’s validations and makes them available to live client side javascript validation scripts.”
  • Validatious - It maps model validations to class names on form elements to easily integrate with ActiveRecord validations for client-side validations.
  • Custom Error Messages - Have complete customization over your ActiveRecord error messages.
  • Awesome Nested Set - A replacement for acts_as_tree, acts_as_nested_set, and better_nested_set.
  • Acts as Snook - “A comment spam solution that doesn’t rely on CAPTCHAs, Javascript, or external web services.”
  • Acts as Voteable - Easily makes your models voteable.
  • Acts as Revisable - Like Acts as Versioned but with precise control over version details.
  • Acts As Paranoid - Stores time of ActiveRecored deletion in a “delete_at” attribute.
  • Acts as Unvolgable - Enables the ability to embed external video sources in your web application.
  • Quick Scopes - A set of named_scopes that you might use on a regular basis: limit, order, where, with, etc. Follow the link to learn more.
  • Stripper - Removes leading and trailing blanks from attribute values in your models.
  • Nilify Blanks - Ensures records data stays nil when nothing is submitted. This is especially useful for those form fields where data is not required but still ends up as an empty string in your database. Now you don’t have to worry by using this gem instead.
  • Custom Timestamps - “Use different columns then created_at and updated_at for timestamps.”
  • Cache-Money - A read/write-through caching library for ActiveRecord.
  • Shoulda - Enhances Test::Unit framework for Rails applications.
  • Mephisto - A CMS for Rails but more focused for blogging.
  • Typo - Another CMS for Rails with a focus on blogging.
  • Radiant - A stripped down, bare bones CMS for Rails. Supports a powerful tagging system and includes extension support.
  • Adva CMS - A Ruby on Rails engine for adding CMS capabilities to your site.
  • Community Engine - Enables many of the features you would need in building a social community web site such as tag clouds, RSS feeds, user profiles, etc. Learn more here.
  • Tog - A collection of tools to make adding social capabilities to your Rails app.
  • Mustache - An alternative template solution to ERB that allows for logic-free views.
  • Haml - Adds a new and possibly more elegant way of building views for your Rails apps.
  • LESS - “Extends CSS with: variables, mixins, operations, and nested rules.” It also uses exesting CSS syntax so you can rename your .css files to .less and it’ll all work.
  • Sass - Syntactically Awesome Stylesheets. “Sass is CSS, plus nested rules, variables, mixins, and more, all in a concise, readable syntax.”
  • More - “More is a plugin for Ruby on Rails applications. It automatically parses your applications .less files through LESS and outputs CSS files.”
  • MemCached - “A high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.” To learn more, check out these tutorials: Basics for Rails and MemCached in Ruby on Rails.
  • Paperclip - Offers an easier way of handling file uploads. Read this article for more info. You can also have default Gravatars and can also manage multiple attachments with validations. Finally, learn how to speed up your tests by 70%.
  • Attachment Fu Manages file uploads. Can also be used to upload via URL as well.
  • Make Resourceful - Easily add RESTful actions to your controllers for basic operations. A good way to get off the ground and running for common functionality.
  • Mod Porter - Adds better scaling for multiple file uploading.
  • Resource Controller - A controller/scaffolding that provides the basic 7 REST methods for you, keeping your code DRY.
  • Restful Transactions - “Ensure that any Ruby on Rails controller action executed within a POST, PUT or DELETE request is wrapped in a transaction.”
  • Restful Authentication - Adds user authentication to your web app. To learn more, read restful authentication and stateful authentication.
  • Lockdown - An authentication/authorization system that is a different take on security than Restful Authentication.
  • Seed Fu - Go beyond basic fixtures and use this to seed your Rails database.
  • TextMate Syntax Highlighting - Allows you to display code using highlighting as found in TextMate.
  • Metric Fu - Measures performance metrics and includes code sniffing tools such as Flay, Reek, and Roodi. Integrates well with Continuous Integration. Read more.
  • Rails iUI - Aids in developing your web application for the iPhone.
  • Palmist - Helps find and fix MySQL bottlenecks.
  • Javascript Auto-Include - Automatically includes and loads JavaScript on a per controller basis.
  • Rubber - “Enables relatively complex multi-instance deployments of RubyOnRails applications to Amazon’s Elastic Compute Cloud (EC2).”
  • Calendar Helper - Render a calendar view of previous, current, and future months with your views. Comes with CSS stylesheet support to help get you started. Check out later_dude for i18n support.
  • Event Calendar - “Easily show multiple, overlapping events across calendar days and rows.”
  • Reservation Calendar - “Easily show multiple, overlapping reservations across calendar days and rows.”
  • WeeklyBuilder - Provides a monthly/weekly calendar view to your for your web app.
  • Calendar Date Select - A JavaScript-based date/time picker that has an impressive set of features. Make sure to check out the demos.
  • Bundle Fu - Streamlines the loading of JavaScript files. Helps speed up loading and reduces additional lines of code.
  • Act As State Machine - Add callback code to your models when they change state. Read more.
  • State Machine - “Adds support for creating state machines for attributes on any Ruby class.”
  • Sentry - A wrapper for OpenSSL encryption classes.
  • Dynamically Tags - Tags words in a sentence, dynamically.
  • Awesome Fields - Allows one to build forms in a much more streamlined fashion using DRY principals.
  • Subdomain Fu - A tool set for adding and dealing with subdomains.
  • Mobile Fu - Adds mobile device support.
  • Google Charts on Rails - A simple plugin with very basic support of the Google Chart API. It’ll get you started quickly but you’ll soon hit limitations.
  • Flotomatic - A handy wrapper to the Flot chart and graph library.
  • Google Gears - Install this plug-in to make use of Google Gears with Rails.
  • ActivePresenter - A clever way in which to wrap and manipulate multiple models into a single form.
  • has_markup - A plugin to ease the display of HTML markup.
  • openStream - Adds e-commerce to your site.
  • Spree - Add e-commerce to your site but still requires a bit of work to get working. Worth checking out.
  • Localized Dates - “The localized_dates plugin takes away some of the pain of localizing dates and times. It leverages the power of the Rails i18n plugin to facilitate localization of dates and times.”
  • will_paginate - Adds pagination to your views.
  • Endless Page - Uses AJAX requests to create an endless page as you scroll down. A nice alternative to using pagination.
  • Query Reviewer - A sort of profiling/debugging tool for your MySQL queries. It generates reports that can be reviewed. It also supports AJAX.
  • System Settings - Adds storing and retrieval of configuration settings for your web application in a convenient manner.
  • New Relic - A Rails plugin that monitors application performance a diagrams where areas could be improved. It is free to use for development but then there is a cost involved to use in production.
  • Augmentations - Adds the ability to define common code for your models in once place and then easily apply this common functionality to the models that need it.
  • Country Select Plugin - Once part of Rails core, it is now a separate plugin due to its offending nature to certain countries.
  • Workling - Provides a simple API for running code in the background (outside of your request).
  • Delayed Job - A scheduler for background tasks/jobs. Is not a daemon thread.
  • Job Fu - “Simple Asynchronous Processing solution that uses the database as queue.”
  • BackgroundJob - Another solution for background tasks.
  • Background Fu - Another background scheduler that claims to be easy to use.
  • Resque - “Resque is a Redis-backed library for creating background jobs, placing those jobs on multiple queues, and processing them later.”
  • Query Reviewer - Analayze and study the number of queries you make to the database. How efficient are you? Find out with this plug-in.
  • Better Partials - Tired of all those render statements in your views? Maybe you have too many helper methods? Give this plug-in a try for making working this space easier.
  • Exception Logger - Logs exceptions in your database and provides a admin view for reviewing the results.
  • Smurf - Automatically minimizes cached JavaScript and CSS code to help improve performance.
  • AssetPackager - Dynamically reduces your stylesheets to one file and your Javascripts to one file.
  • Textile Toolbar - Adds a textile toolbar to your web app for people to easily write HTML markup without all the overhead and still generate clean HTML code on the backend.
  • Textile Editor - Adds a Textile WSIWIG editor to your views. Works with both the Prototype and jQuery libraries.
  • Geocoder - “Adds object geocoding and database-agnostic distance calculations to Ruby on Rails. It’s as simple as calling fetch_coordinates! on your objects, and then using a named scope like Venue.near(”Billings, MT”).”
  • Graticule - Provides a “geocoding API for looking up address coordinates. It supports many popular APIs, including Yahoo, Google, Geocoder.ca, Geocoder.us, PostcodeAnywhere and MetaCarta.”
  • Polymaps - Takes your geocoded data and draws polygons on Google Maps with it.
  • QueryTrace - Helps pinpoint where your SQL queries are slowing down and killing your application.
  • XSS Terminate - “Makes stripping and sanitizing HTML stupid-simple. Install and forget. And forget about forgetting to h() your output, because you won‘t need to anymore.”
  • Stuffing - “A Rails plugin to read and write CouchDB documents via Activerecord.”
  • enum_field - Easily add enum_fields to ActiveRecord.
  • Redirect Routing - Easily redirect your routes.
  • Report as Sparkline - Adds easy generation of sparklines based on model data.
  • Validates Timeliness - “Date and time validation plugin for Rails 2.x and allows custom date/time format.”
  • Scrap - “A Rails metal handler for analyzing your processes’ memory usage.”
  • HARSH - a.k.a. Another Rails Syntax Highlighter. “It highlights code in Rails, much like Radiograph or tm_syntax_highlighting. However, it does it well, better . Oh, and it also supports Haml, as well as ERb. And it comes with rake tasks.”
  • Highlight - “It’s basically a wrapper around the popular pygments.org highlighter that’s written in Python and supports an impressive number of languages.”
  • D2S3 - “Rails plugin which provides a form helper to upload files directly to Amazon’s S3 using an HTTP POST.”
  • Blue Ridge - Adds BDD JavaScript (using Screw.Unit and env.js). Here is some info on getting started.
  • Auto Session Timeout - A plug-in for automatically timing out a session within your web application.
  • Spreadsheets on Rails- “Generate xls documents by using rxls templates.”
  • JavaScript Vars - Easily add JavaScript variables to your views without using js-erb views.
  • JS Data Helper - “Rails helpers that dump data attributes into DOM elements.”
  • Rails Indexes - “A rake task to track down missing database indexes. does not assume that all foreign keys end with the convention of _id.”
  • OpenID Engine - An engine that provides a thin wrapper around the openid-ruby gem.
  • Imploy - A small, lightweight, and easier deployment option for server deployments.
  • QUnit for Rails - Provides a toolbar for running QUnit tests.
  • Geo Mere Laal - “Zero-effort creation of Location-aware Rails application based on W3C Geolocaton API.”
  • Rails on PostgreSQL - “PostgreSQL views, functions, triggers, foreign keys for rails migration.”
  • RCumber - “A rails plugin that gives your customers a web interface where they can view, edit and run Cucumber tests directly on your rails project. Useful for developing Cucumber/Webrat tests. Clicking on test results takes you directly to that line in textmate.”
  • Admin Data - “Browse and Manage your data using the browser.”
  • Disqussion - “Disqussion is a library for using the Disqus API.”
  • Shoebox - “Helps you manage styles and scripts as first-class citizens in Rails.”
  • Super Deploy - A collection of Capistrano deployment recipes.
  • rubaidhstrano - Another collection of Capistrano recipes.
  • Cached Externals - Allows you to check in external dependencies to version control since they are not likely to change often while allowing a local symbolic link to those external dependencies.
  • YUI Compressor Fu - “Minifies your javascripts and stylesheets using YUI Compressor.
  • irwi - Adds Wiki support to Rails.
  • SWF Fu - “Treat your Adobe Flash swf files like any other asset (images, javascripts, etc…) and embed them using SWFObject 2.2.”
  • Sitemap Generator - “Enables ‘enterprise-class’ Google Sitemaps to be easily generated for a Rails site as a rake task, using a simple ‘Rails Routes’-like DSL.”
  • Input CSS - “Provides a default CSS class on all INPUT fields based on the type attribute - perfect for designers.”
  • 2dc_jqgrid - “This Rails plugin allows you to add jQuery datagrids into your applications.”

Templates

  • Rails Setup - Quickly generate a new Ruby on Rails application with more than the default settings. There is a lot of goodies included in this template so follow the link and check out feature set to learn more.
  • Big Old Rails Template - A whole lot of setup in a single template. It’s big but worth a look.
  • Twitter - Construct a Twitter application within seconds.

Themes

  • Web App Theme - A good foundation from which to launch theme support within your application.

Best Practices

Metaprogramming

Security

Performance/Benchmarks

Web Frameworks

  • Thin - A Ruby web server that combines the power of Mongrel, Event Machine, and Rack.
  • Ebb - A small and fast web server for dynamical languages with minimal features.
  • Lighttpd - A web server that aims to be fast, high performance, and excellent and managing CPU load.
  • Mack - “Is a Ruby web application framework that is being built from the ground up to aid in the development of distributed, portal-like applications that have a need for speed. Mack supports best of breed technologies in a modular way.”
  • Unicorn - A HTTP server or Rack applications with Unix-like commands. Here are a few reasons why to like it.

Web Hosts

The following is a list of web hosting providers of Ruby on Rails applications. The list is asssembled in no particular order:

Here are other options.

Job Leads

Additional Resources

  • giiternal - A handy took for managning source code dependencies.
  • Run Code Run - A continuous integration server in the cloud.
  • Cruise Control - A continuous integration build system on Ruby on Rails for Ruby on Rails. Very simple to download and get up and running.
  • Signal - “An integration server written in Rails and integrated with metric_fu, rspec and cucumber, easy to install and easy to use.”
  • Cinabox - A Continuous Integration build system for Ruby. Designed to run on a Ubuntu distro.
  • Camping
  • RubyWorks - A pre-assembled web server production stack for Ruby.
  • Rails Kits - A collection of plugins and resources assembled in easy to use kits that can help jumpstart your web development. Each kit comes with a single site or development license. Prices range from $200 and up.
  • MacRuby - A version of Ruby that is built on top of Objective-C for the MacOS. Provides more stability and better performance than the default Ruby distribution.
  • Rubinius - A Ruby virtual machine written in C that is loosely based on the Smalltalk-80 architecture.
  • Passenger - a.k.a. mod_rails. Makes deploying Rails application on an Apache server easier.
  • Merbunity - A web site and community of news and resources built around Merb.
  • DBSlayer - “A lightweight database abstraction layer suitable for high-load websites where you need the scalable advantages of connection pooling. Written in C for speed, DBSlayer talks to clients via JSON over HTTP”.
  • Thor’s Hammer - An alternative to the rake and sake scripting frameworks.
  • Splunk - Helps manage the various log files associated with a web application. Check out the web site demos as well as usage on Amazon EC2.
  • SWFUpload - A lightweight JavaScript/Flash plugin for uploading a file or multiple files to a web server. Seventytwo has an article on how to make this plugin work with Rails.
  • Hoptoad - A free service that will capture and aggregate exceptions in your web application to reduce e-mail maintenance spam. Can also be used as a syndicated feed amongst other capabilities.
  • BaseApp - A default Ruby on Rails application that comes with navigation tabs, user authentication and roles, and user administration UI to help jump start your next application development work.
  • Bort - Another Ruby on Rails application like BaseApp to get you off the ground and running quickly.
  • Beanstalkd A fast work queue service. Check out the Devver basic and intermediate posts for getting started.
  • Puppet - A resource for automating system administration tasks.
  • Enki - A base application framework for blogging. Supposedly better than Mephisto or SimpleLog.
  • iPhone on Rails - A framework that aids in interacting with Ruby on Rails applicaitons.
  • Shoes/Raisins - A graphical toolkit for building colorful apps.
  • Ruby Graphviz - Library support for Graphviz. Learn more about automating data visualization with Ruby and Graphviz.
  • Pound - “A reverse proxy, load balancer and HTTPS front-end for Web server(s). Pound was developed to enable distributing the load among several Web-servers and to allow for a convenient SSL wrapper for those Web servers that do not offer it natively.”
  • Spike - A Ruby on Rails log viewer and analysis tool for the MacOS.
  • Masochism - “ActiveRecord connection proxy for master/slave connections”.
  • Redmine - A project management application built on top of Ruby on Rails.
  • Babylon - “A XMPP Component Framework based on EventMachine. It uses the Nokogiri GEM, which is a Ruby wrapper for Libxml2. It implements the MVC paradigm.”
  • EcomPages - A Ruby on Rails shopping cart application.
  • BrowserCMS - A “Humane Content Management for Rails”. Learn more.
  • Date Performance - Improves date and time performance by using C libraries instead of the native Ruby ones.
  • Kete - Open source, collaboration software.
  • Pushmaster - “A helper script that makes it trivial to listen to Github Post-Receive hooks.”
  • Ocra - A one-click installer generator for Windows.
  • Scout - A Ruby on Rails monitoring service.
  • Gitorious - Open source code to a Rails application that allows you to serve up source code much like GitHub. You can learn more here.
  • Homebrew - “A package management system for OS X. In other words it is a tool that helps you manage the installation of other open source software on your Mac.”
  • RJCrop - “A sample application that shows how to implement image cropping using the popular Paperclip Rails plugin and the Jcrop jQuery plugin for selecting the cropping area.”
  • Git Deploy - “A shell script to easily push a local git repository to an ssh home and set it up so you can just “git push” and “git pull”.”
  • DevIL - “Developer’s Image Library (DevIL) is a programmer’s library to develop applications with very powerful image loading capabilities, yet is easy for a developer to learn and use. Ultimate control of images is left to the developer, so unnecessary conversions, etc. are not performed. DevIL utilizes a simple, yet powerful, syntax. DevIL can load, save, convert, manipulate, filter and display a wide variety of image formats.”
  • BucketWise - “A web-based personal finance manager with a focus on non-OCD budgeting and avoiding credit card debt.”
  • JS Test Driver - “Easily integrates with continuous builds systems and allows running tests on multiple browsers quickly to ease TDD style development.”
  • Ruby Gmail - “A Rubyesque interface to Gmail. Connect to Gmail via IMAP and manipulate emails and labels. Send email with your Gmail account via SMTP. Includes full support for parsing and generating MIME messages.”
  • Caliper - Cloud hosted metrics for your code.
  • RAFL - The Ruby Audio File Library. A Ruby library for building WAV files.
  • Mac Ruby - “It is a version of Ruby 1.9, ported to run directly on top of Mac OS X core technologies such as the Objective-C common runtime and garbage collector, the CoreFoundation framework and the LLVM compiler infrastructure.”