Awesome Ruby Toolbox
A collection of awesome Ruby libraries from https://www.ruby-toolbox.com , with removing DRPRECATED
libraries, thanks the author colszowka!
Active Record Plugins
Active Record DB Adapters
- activerecord-sqlserver-adapter - ActiveRecord SQL Server Adapter. SQL Server 2012 and upward.
- activerecord-jdbc-adapter - AR-JDBC is a database adapter for Rails' ActiveRecord component designed to be used with JRuby built upon Java's JDBC API for database access. Provides (ActiveRecord) built-in adapters: MySQL, PostgreSQL and SQLite3 as well as adapters for popular databases such as Oracle, SQLServer, DB2, FireBird and even Java (embed) databases: Derby, HSQLDB and H2. It allows to connect to virtually any JDBC-compliant database with your JRuby on Rails application.
- activerecord-jdbcmysql-adapter - MySQL JDBC adapter for JRuby on Rails.
- activerecord-jdbcpostgresql-adapter - Postgres JDBC adapter for JRuby on Rails.
- activerecord-jdbcderby-adapter - Derby JDBC adapter for JRuby on Rails.
- oracle-enhanced - Oracle "enhanced" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases. This adapter is superset of original ActiveRecord Oracle adapter.
Active Record Default Values
Active Record Enumerations
- enumerize - Enumerated attributes with I18n and ActiveRecord/Mongoid/MongoMapper support
- Simple enum - Provides enum-like fields for ActiveRecord, ActiveModel and Mongoid models.
- Enumerate it - Enumerations for Ruby with some magic powers!
Active Record Index Assistants
- schema_plus - SchemaPlus is a gem that simply pulls in a collection of other gems from the SchemaPlus family of ActiveRecord extensions
- lol_dba - lol_dba is a small package of rake tasks that scan your application models and displays a list of columns that probably should be indexed. Also, it can generate .sql migration scripts.
- immigrant - Adds a generator for creating a foreign key migration based on your current model associations
Active Record Named Scopes
- ransack - Ransack is the successor to the MetaSearch gem. It improves and expands upon MetaSearch's functionality, but does not have a 100%-compatible API.
- filterrific - Filterrific is a Rails Engine plugin that makes it easy to filter, search, and sort your ActiveRecord lists.
Active Record Nesting
- Awesome nested set - An awesome nested set implementation for Active Record
- Ancestry - Ancestry allows the records of a ActiveRecord model to be organized in a tree structure, using a single, intuitively formatted database column. It exposes all the standard tree structure relations (ancestors, parent, root, children, siblings, descendants) and all of them can be fetched in a single sql query. Additional features are named_scopes, integrity checking, integrity restoration, arrangement of (sub)tree into hashes and different strategies for dealing with orphaned records.
- Closure Tree - Easily and efficiently make your ActiveRecord model support hierarchies
Active Record Sharding
- Octopus - This gem allows you to use sharded databases with ActiveRecord. This also provides a interface for replication and for running migrations with multiples shards.
- activerecord-turntable - ActiveRecord sharding extension
Active Record Soft Delete
- paranoia - Paranoia is a re-implementation of acts_as_paranoid for Rails 3, using much, much, much less code. You would use either plugin / gem if you wished that when you called destroy on an Active Record object that it didn't actually destroy it, but just "hid" the record. Paranoia does this by setting a deleted_at field to the current time when you destroy a record, and hides it by scoping all queries on your model to only include records which do not have a deleted_at field.
- Permanent records - Never Lose Data. Rather than deleting rows this sets Record#deleted_at and gives you all the scopes you need to work with your data.
- destroyed_at - Safe destroy for ActiveRecord.
Active Record Sortables
- Acts as list - This "acts_as" extension provides the capabilities for sorting and reordering a number of objects in a list. The class that has this specified needs to have a "position" column defined as an integer on the mapped database table.
Active Record User Stamping
Active Record Value Cleanup
- Strip attributes - StripAttributes automatically strips all ActiveRecord model attributes of leading and trailing whitespace before validation. If the attribute is blank, it strips the value to nil.
Active Record Versioning
- PaperTrail - Track changes to your models' data. Good for auditing or versioning.
- audited - Log all changes to your models
- auditable - A simple gem that audit ActiveRecord models' attributes or methods by taking snapshots and diff them for you. Starting from scratch to work with Rails 3.2.2 onwards
Pagination
- Kaminari - Kaminari is a Scope & Engine based, clean, powerful, agnostic, customizable and sophisticated paginator for Rails 3+
- will_paginate - will_paginate provides a simple API for performing paginated queries with Active Record, DataMapper and Sequel, and includes helpers for rendering pagination links in Rails, Sinatra and Merb web apps.
- sorted - Data sorting library, used by other libs to construct queries and more
Rails Comments
- Acts as commentable with threading - Similar to acts_as_commentable; however, utilizes awesome_nested_set to provide threaded comments
- commontator - A Rails engine for comments.
Rails DB Bootstrapping
Rails Ratings
Rails Search
- Sunspot - Sunspot is a library providing a powerful, all-ruby API for the Solr search engine. Sunspot manages the configuration of persistent Ruby classes for search and indexing and exposes Solr's most powerful features through a collection of DSLs. Complex search operations can be performed without hand-writing any boolean queries or building Solr parameters by hand.
- sunspot_rails - Sunspot::Rails is an extension to the Sunspot library for Solr search. Sunspot::Rails adds integration between Sunspot and ActiveRecord, including defining search and indexing related methods on ActiveRecord models themselves, running a Sunspot-compatible Solr instance for development and test environments, and automatically commit Solr index changes at the end of each Rails request.
- Thinking-sphinx - An intelligent layer for ActiveRecord (via Rails and Sinatra) for the Sphinx full-text search tool.
- Tire - Tire is a Ruby client for the Elasticsearch search engine/database. It provides Ruby-like API for fluent communication with the Elasticsearch server and blends with ActiveModel class for convenient usage in Rails applications. It allows to delete and create indices, define mapping for them, supports the bulk API, and presents an easy-to-use DSL for constructing your queries. It has full ActiveRecord/ActiveModel compatibility, allowing you to index your models (incrementally upon saving, or in bulk), searching and paginating the results. Please check the documentation at http://karmi.github.com/retire/.
- searchkick - Intelligent search made easy
- elasticsearch - Ruby integrations for Elasticsearch (client, API, etc.)
- pg_search - PgSearch builds Active Record named scopes that take advantage of PostgreSQL's full text search
- elasticsearch-rails - Ruby on Rails integrations for Elasticsearch.
- Scoped search - Scoped search makes it easy to search your ActiveRecord-based models. It will create a named scope :search_for that can be called with a query string. It will build an SQL query using the provided query string and a definition that specifies on what fields to search. Because the functionality is built on named_scope, the result of the search_for call can be used like any other named_scope, so it can be chained with another scope or combined with will_paginate. Because it uses standard SQL, it does not require any setup, indexers or daemons. This makes scoped_search suitable to quickly add basic search functionality to your application with little hassle. On the other hand, it may not be the best choice if it is going to be used on very large datasets or by a large user base.
- searchlight - Searchlight is a low-magic way to build database searches using an ORM. It's compatible with ActiveRecord, Sequel, Mongoid, and any other ORM that can build queries by chaining method calls.
- elastictastic - Elastictastic is an object-document mapper and lightweight API adapter for ElasticSearch. Elastictastic's primary use case is to define model classes which use ElasticSearch as a primary document-oriented data store, and to expose ElasticSearch's search functionality to query for those models.
Rails Tagging
- Acts-as-taggable-on - With ActsAsTaggableOn, you can tag a single model on several contexts, such as skills, interests, and awards. It also provides other advanced functionality.
Background Processing
Background Jobs
- Resque - Resque is a Redis-backed Ruby library for creating background jobs, placing those jobs on multiple queues, and processing them later. Background jobs can be any Ruby class or module that responds to perform. Your existing classes can easily be converted to background jobs or you can create new classes specifically to do work. Or, you can do both. Resque is heavily inspired by DelayedJob (which rocks) and is comprised of three parts: * A Ruby library for creating, querying, and processing jobs * A Rake task for starting a worker which processes jobs * A Sinatra app for monitoring queues, jobs, and workers.
- sidekiq - Simple, efficient background processing for Ruby.
- Delayed job - Delayed_job (or DJ) encapsulates the common pattern of asynchronously executing longer tasks in the background. It is a direct extraction from Shopify where the job table is responsible for a multitude of core tasks.
- Beanstalkd - Beanstalk is a simple, fast work queue.
- Bunny - Easy to use, feature complete Ruby client for RabbitMQ 3.3 and later versions.
- concurrent-ruby - Modern concurrency tools including agents, futures, promises, thread pools, actors, supervisors, and more. Inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency patterns.
- delayed_job_active_record - ActiveRecord backend for Delayed::Job, originally authored by Tobias Lütke
- sucker_punch - Asynchronous processing library for Ruby
- amqp - Mature EventMachine-based RabbitMQ client.
- Queue Classic - queue_classic is a queueing library for Ruby apps. (Rails, Sinatra, Etc...) queue_classic features asynchronous job polling, database maintained locks and no ridiculous dependencies. As a matter of fact, queue_classic only requires pg.
- Cloud-crowd - The crowd, suddenly there where there was nothing before, is a mysterious and universal phenomenon. A few people may have been standing together -- five, ten or twelve, nor more; nothing has been announced, nothing is expected. Suddenly everywhere is black with people and more come streaming from all sides as though streets had only one direction.
- backburner - Beanstalk background job processing made easy
- Beetle - A highly available, reliable messaging infrastructure
Daemonizing
- dante - Turn any process into a demon.
Daemon Management
- foreman - Process manager for applications with multiple components
Scheduling
- Rufus-scheduler - job scheduler for Ruby (at, cron, in and every jobs).
Code Quality
Code Metrics
- SimpleCov - Code coverage for Ruby 1.9+ with a powerful configuration library and automatic merging of coverage across test suites
- rubocop - Automatic Ruby code style checking tool. Aims to enforce the community-driven Ruby Style Guide.
- Rails best practices - a code metric tool for rails codes, written in Ruby.
- Reek - Reek is a tool that examines Ruby classes, modules and methods and reports any code smells it finds.
- coveralls - A Ruby implementation of the Coveralls API.
- rubycritic - RubyCritic is a tool that wraps around various static analysis gems to provide a quality report of your Ruby code.
- foodcritic - Lint tool for Chef cookbooks.
- MetricFu - Code metrics from Flog, Flay, Saikuro, Churn, Reek, Roodi, Code Statistics, and Rails Best Practices. (and optionally RCov)
- guard-rubocop - Guard::Rubocop automatically checks Ruby code style with RuboCop when files are modified.
- coco - "Code coverage tool for ruby 2.0 to 2.3. Simply "require 'coco'" from rspec or unit/test. Build simple html report. Report sources that have no tests. Configurable if you need to.
Communication
Asynchronous E-Mail
- Resque Mailer - Rails plugin for sending asynchronous email with ActionMailer and Resque.
CRM Apps
- Fat free crm - Ruby on Rails CRM platform for Web 2.0 and beyond
E-Mail Preview
- MailCatcher - MailCatcher runs a super simple SMTP server which catches any message sent to it to display in a web interface. Run mailcatcher, set your favourite app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server, then check out http://127.0.0.1:1080 to see the mail.
- Letter Opener - When mail is sent from your application, Letter Opener will open a preview in the browser instead of sending.
- mail_view - Visual email testing
- Rails Email Preview - A Rails Engine to preview plain text and html email in your browser
- sanitize_email - Email Condom for your Ruby Server. In Rails, Sinatra, et al, or simply the mail gem: Aids in development, testing, qa, and production troubleshooting of email issues without worrying that emails will get sent to actual live addresses.
E-Mail Processing
- griddler - SendGrid Parse API client Rails Engine
- Mailman - Mailman makes it easy to process incoming emails with a simple routing DSL
- mail_room - mail_room will proxy email (gmail) from IMAP to a delivery method
E-Mail Sending
- Action Mailer - Email on Rails. Compose, deliver, receive, and test emails using the familiar controller/view pattern. First-class support for multipart email and attachments.
- Mail - A really Ruby Mail handler.
Exchange Clients
- viewpoint - A Ruby client access library for Microsoft Exchange Web Services (EWS). Examples can be found here: http://distributed-frostbite.blogspot.com
Forum Systems
- forem - The best Rails 3 and Rails 4 forum engine. Ever.
Inline CSS for E-Mail
- Roadie - Roadie tries to make sending HTML emails a little less painful by inlining stylesheets and rewriting relative URLs for you.
IRC Bots
- Cinch - A simple, friendly DSL for creating IRC bots
Content Management & Blogging
Blog Engines
- Publify - Since Typo has been in existence since March 2005, it is likely the oldest blogging platform in Rails. It has a full set of features you would expect from such an engine, which include powerful SEO capabilities, full themes, and plug-in extensions.
- blogit - Add a blog to your Rails application in minutes with this mountable Rails Engine
Content Management
- Refinery CMS - A Ruby on Rails CMS that supports Rails 4.2. It's developer friendly and easy to extend.
- Locomotive - LocomotiveCMS is a next generation CMS system with sexy admin tools, liquid templating, and inline editing powered by mongodb and rails 3.2
- Comfortable Mexican Sofa - ComfortableMexicanSofa is a powerful Rails 4 CMS Engine
- Radiant - Radiant is a simple and powerful publishing system designed for small teams. It is built with Rails and is similar to Textpattern or MovableType, but is a general purpose content managment system--not merely a blogging engine.
- Alchemy CMS - Alchemy is a powerful, userfriendly and flexible Rails 4 CMS.
Static Website Generation
- Jekyll - Jekyll is a simple, blog aware, static site generator.
- Middleman - A static site generator. Provides dozens of templating languages (Haml, Sass, Compass, Slim, CoffeeScript, and more). Makes minification, compression, cache busting, Yaml data (and more) an easy part of your development cycle.
- high_voltage - Fire in the disco. Fire in the ... taco bell.
- nanoc - Nanoc is a static-site generator focused on flexibility. It transforms content from a format such as Markdown or AsciiDoc into another format, usually HTML, and lays out pages consistently to retain the site’s look and feel throughout. Static sites built with Nanoc can be deployed to any web server.
- awestruct - Awestruct is a static site baking and publishing tool. It supports an extensive list of both templating and markup languages via Tilt (Haml, Slim, AsciiDoc, Markdown, Sass via Compass, etc), provides mobile-first layout and styling via Bootstrap or Foundation, offers a variety of deployment options (rsync, git, S3), handles site optimizations (minification, compression, cache busting), includes built-in extensions such as blog post management and is highly extensible.
Wiki Apps
- Gollum - A simple, Git-powered wiki with a sweet API and local frontend.
- Instiki - Instiki is a Wiki Clone written in Ruby that ships with an embedded webserver. You can setup up an Instiki in just a few steps. Possibly the simplest wiki setup ever.
- irwi - Irwi is Ruby on Rails plugin which adds wiki functionality to your application.
CSS
CSS with Ruby
- Sass - Sass makes CSS fun again. Sass is an extension of CSS, adding nested rules, variables, mixins, selector inheritance, and more. It's translated to well-formatted, standard CSS using the command line tool or a web-framework plugin.
- sass-rails - Sass adapter for the Rails asset pipeline.
- bootstrap-sass - bootstrap-sass is a Sass-powered version of Bootstrap 3, ready to drop right into your Sass powered applications.
- Compass - Compass is a Sass-based Stylesheet Framework that streamlines the creation and maintenance of CSS.
- bourbon - Bourbon is a library of pure Sass mixins that are designed to be simple and easy to use. No configuration required. The mixins aim to be as vanilla as possible, meaning they should be as close to the original CSS syntax as possible.
- twitter-bootstrap-rails - twitter-bootstrap-rails project integrates Bootstrap CSS toolkit for Rails 4, 3.x Asset Pipeline
Font-Face Servers
Data Persistence
Amazon DynamoDB
CouchDB Clients
- Couchrest - CouchRest provides a simple interface on top of CouchDB's RESTful HTTP API, as well as including some utility scripts for managing views and attachments.
- CouchRest Model - CouchRest Model provides aditional features to the standard CouchRest Document class such as properties, view designs, associations, callbacks, typecasting and validations.
- Couch potato - Ruby persistence layer for CouchDB
CSV Parsers
Data Migration
MongoDB Clients
- Mongo Ruby Driver - A Ruby driver for MongoDB
- Mongomapper - MongoMapper is a Object-Document Mapper for Ruby and Rails
Object-relational mapping
- Active Record - Databases on Rails. Build a persistent domain model by mapping database tables to Ruby classes. Strong conventions for associations, validations, aggregations, migrations, and testing come baked-in.
- Sequel - The Database Toolkit for Ruby
- squeel - Squeel unlocks the power of Arel in your Rails application with a handy block-based syntax. You can write subqueries, access named functions provided by your RDBMS, and more, all without writing SQL strings. Supporting Rails 3 and 4.
- Ruby Object Mapper - Persistence and mapping toolkit for Ruby
Redis Clients
- Redis Ruby - A Ruby client that tries to match Redis' API one-to-one, while still providing an idiomatic interface. It features thread-safety, client-side sharding, pipelining, and an obsession for performance.
- Redis Store - Namespaced Rack::Session, Rack::Cache, I18n and cache Redis stores for Ruby web frameworks.
- Redis Objects - Map Redis types directly to Ruby objects. Works with any class or ORM.
- Ohm - Ohm is a library that allows to store an object in Redis, a persistent key-value database. It has very good performance.
SQL Database Adapters
- mysql2 - A simple, fast Mysql library for Ruby, binding to libmysql
- sqlite3-ruby - This module allows Ruby programs to interface with the SQLite3 database engine (http://www.sqlite.org). You must have the SQLite engine installed in order to build this module. Note that this module is NOT compatible with SQLite 2.x.
-
jdbc-mysql - Install this gem
require 'jdbc/mysql'
and invokeJdbc::MySQL.load_driver
within JRuby to load the driver. -
jdbc-postgres - Install this gem
require 'jdbc/postgres'
and invokeJdbc::Postgres.load_driver
within JRuby to load the driver. - ruby-oci8 - ruby-oci8 is a ruby interface for Oracle using OCI8 API. It is available with Oracle 10g or later including Oracle Instant Client.
- postgresql_cursor - PostgreSQL Cursor is an extension to the ActiveRecord PostgreSQLAdapter for very large result sets. It provides a cursor open/fetch/close interface to access data without loading all rows into memory, and instead loads the result rows in "chunks" (default of 1_000 rows), buffers them, and returns the rows one at a time.
Developer Tools
Benchmarking
CLI Option Parsers
- 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.
- Slop - A DSL for gathering options and parsing command line flags
- cocaine - A small library for doing (command) lines
- gli - Build command-suite CLI apps that are awesome. Bootstrap your app, add commands, options and documentation while maintaining a well-tested idiomatic command-line app
- commander - The complete solution for Ruby command-line executables. Commander bridges the gap between other terminal related libraries you know and love (OptionParser, HighLine), while providing many new features, and an elegant API.
- clamp - Clamp provides an object-model for command-line utilities. It handles parsing of command-line options, and generation of usage help.
- methadone - Methadone provides a lot of small but useful features for developing a command-line app, including an opinionated bootstrapping process, some helpful cucumber steps, and some classes to bridge logging and output into a simple, unified, interface
CLI Progress Bars
- ruby-progressbar - Ruby/ProgressBar is an extremely flexible text progress bar library for Ruby. The output can be customized with a flexible formatting system including: percentage, bars of various formats, elapsed time and estimated time remaining.
- fuubar - the instafailing RSpec progress bar formatter
- progress_bar - Give people feedback about long-running tasks without overloading them with information: Use a progress bar, like Curl or Wget!
Concurrent Processing
- EventMachine - EventMachine implements a fast, single-threaded engine for arbitrary network communications. It's extremely easy to use in Ruby. EventMachine wraps all interactions with IP sockets, allowing programs to concentrate on the implementation of network protocols. It can be used to create both network servers and clients. To create a server or client, a Ruby program only needs to specify the IP address and port, and provide a Module that implements the communications protocol. Implementations of several standard network protocols are provided with the package, primarily to serve as examples. The real goal of EventMachine is to enable programs to easily interface with other programs using TCP/IP, especially if custom protocols are required.
- Celluloid - Celluloid enables people to build concurrent programs out of concurrent objects just as easily as they build sequential programs out of sequential objects
- Cool.io - Cool.io provides a high performance event framework for Ruby which uses the libev C library
- workers - A Ruby gem for performing work in background threads.
Configuration Management
-
dotenv - Loads environment variables from
.env
. - dotenv-rails - Autoload dotenv in Rails.
- rails_config - Please install the Config gem instead.
- ledermann-rails-settings - Settings gem for Ruby on Rails
Deprecation Tools
Gem and Library Inspection
Gem Creation
-
Hoe - Hoe is a rake/rubygems helper for project Rakefiles. It helps you manage, maintain, and release your project and includes a dynamic plug-in system allowing for easy extensibility. Hoe ships with plug-ins for all your usual project tasks including rdoc generation, testing, packaging, deployment, and announcement.. See class rdoc for help. Hint:
ri Hoe
or any of the plugins listed below. For extra goodness, see: http://docs.seattlerb.org/hoe/Hoe.pdf - Ore - Ore is a fully configurable and extendable Ruby gem generator. With Ore you spend less time editing files, and more time writing code.
- rubygems-tasks - Agnostic and unobtrusive Rake tasks for managing and releasing Ruby Gems.
git Tools
- githug - An interactive way to learn git.
- Ruby/Git - Ruby/Git is a Ruby library that can be used to create, read and manipulate Git repositories by wrapping system calls to the git binary.
- rugged - Rugged is a Ruby bindings to the libgit2 linkable C Git library. This is for testing and using the libgit2 library in a language that is awesome.
GUI Frameworks
- FXRuby - FXRuby is the Ruby binding to the FOX GUI toolkit.
- Ruby/GTK2 - Ruby/GTK2 is a Ruby binding of GTK+-2.x.
irb Alternatives
- Pry - An IRB alternative and runtime developer console
irb Tools
- table_print - TablePrint turns objects into nicely formatted columns for easy reading. Works great in rails console, works on pure ruby objects, autodetects columns, lets you traverse ActiveRecord associations. Simple, powerful.
- irbtools - Irbtools make Ruby's IRB more productive.
- every_day_irb - EveryDayIrb simplifies daily life in IRB with commands like: ls, cat, rq, rrq, ld, reset!, ...
- Clipboard - Access to the clipboard on Linux, MacOS, Windows, and Cygwin: Clipboard.copy, Clipboard.paste, Clipboard.clear
Presentation Software
- Slideshow - Slide Show (S9) - A Free Web Alternative to PowerPoint and Keynote in Ruby
Project Management
- gitlabhq - GitLab is version control for your server
- Redmine - Redmine is a flexible project management web application written using Ruby on Rails framework. http://github.com/edavis10/redmine is the official git mirror of the svn repository
- fulcrum - An agile project planning tool
Ruby Core Extensions
- Active Support - A toolkit of support libraries and Ruby core extensions extracted from the Rails framework. Rich support for multibyte strings, internationalization, time zones, and testing.
- Hashie - Hashie is a collection of classes and mixins that make hashes more powerful.
- Facets - Facets is the premier collection of extension methods for the Ruby programming language. Facets extensions are unique by virtue of thier atomicity. They are stored in individual files allowing for highly granular control of requirements. In addition, Facets includes a few additional classes and mixins suitable to wide variety of applications.
- hamster - Efficient, immutable, thread-safe collection classes for Ruby
- RubyTree - RubyTree is a pure Ruby implementation of the generic tree data structure. It provides a node-based model to store named nodes in the tree, and provides simple APIs to access, modify and traverse the structure. The implementation is node-centric, where individual nodes in the tree are the primary structural elements. All common tree-traversal methods (pre-order, post-order, and breadth-first) are supported. The library mixes in the Enumerable and Comparable modules to allow access to the tree as a standard collection (iteration, comparison, etc.). A Binary tree is also provided, which provides the in-order traversal in addition to the other methods. RubyTree supports importing from, and exporting to JSON, and also supports the Ruby's standard object marshaling. This is a BSD licensed open source project, and is hosted at http://github.com/evolve75/RubyTree, and is available as a standard gem from http://rubygems.org/gems/rubytree. The home page for RubyTree is at http://rubytree.anupamsg.me.
Ruby Version Management
- rbenv - Groom your app’s Ruby environment
- RVM - RVM ~ Ruby Environment Manager ~ Ruby Gem Library.
- ruby-build - Compile and install Ruby
- chruby - Changes the current Ruby
Scripting Frameworks
- Thor - Thor is a toolkit for building powerful command-line interfaces.
Terminal Coloring
- Rainbow - Colorize printed text on ANSI terminals
- paint - Terminal painter: No string extensions / 256 color support / effect support. Usage: Paint['string', :red, :bright]
Text Editors in Ruby
Documentation Tools
Documentation Generators
- RDoc - RDoc produces HTML and command-line documentation for Ruby projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying documentation from the command-line.
- Sdoc - rdoc generator html with javascript search index.
- 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.
- DocumentUp - Pretty documentation generator for Github projects with proper Readme.
- rspec_api_documentation - Generate API docs from your test suite
- apipie-rails - Rails REST API documentation tool
- md2man - Converts markdown into UNIX manpages and HTML webpages.
Gem Doc Viewers
Documents & Reports
PDF Generation
- Prawn - Prawn is a fast, tiny, and nimble PDF generator for Ruby
- Wicked pdf - Wicked PDF uses the shell utility wkhtmltopdf to serve a PDF file to a user from HTML. In other words, rather than dealing with a PDF generation DSL of some sort, you simply write an HTML view as you would normally, and let Wicked take care of the hard stuff.
- Pdfkit - Uses wkhtmltopdf to create PDFs using HTML
- Wkhtmltopdf - Provides binaries for WKHTMLTOPDF project in an easily accessible package.
- shrimp - html to pdf with phantomjs
PDF Processing
- pdf-reader - The PDF::Reader library implements a PDF parser conforming as much as possible to the PDF specification from Adobe
Reports & Spreadsheets
- axlsx - xlsx spreadsheet generation with charts, images, automated column width, customizable styles and full schema validation. Axlsx helps you create beautiful Office Open XML Spreadsheet documents ( Excel, Google Spreadsheets, Numbers, LibreOffice) without having to understand the entire ECMA specification. Check out the README for some examples of how easy it is. Best of all, you can validate your xlsx file before serialization so you know for sure that anything generated is going to load on your client's machine.
- spreadsheet - The Spreadsheet Library is designed to read and write Spreadsheet Documents. As of version 0.6.0, only Microsoft Excel compatible spreadsheets are supported. Spreadsheet is a combination/complete rewrite of the Spreadsheet::Excel Library by Daniel J. Berger and the ParseExcel Library by Hannes Wyss. Spreadsheet can read, write and modify Spreadsheet Documents.
- roo - Roo can access the contents of various spreadsheet files. It can handle * OpenOffice * Excelx * LibreOffice * CSV
- axlsx_rails - Axlsx_Rails provides an Axlsx renderer so you can move all your spreadsheet code from your controller into view files. Partials are supported so you can organize any code into reusable chunks (e.g. cover sheets, common styling, etc.) You can use it with acts_as_xlsx, placing the to_xlsx call in a view and adding ':package => xlsx_package' to the parameter list. Now you can keep your controllers thin!
- dossier - Easy SQL based report generation with the ability to accept request parameters and render multiple formats.
- mondrian-olap - JRuby gem for performing multidimensional queries of relational database data using Mondrian OLAP Java library
- thinreports - Thinreports is an open source report generation tool for Ruby.
- write_xlsx - write_xlsx is a gem to create a new file in the Excel 2007+ XLSX format.
E-Commerce and Payments
Online Shops
- Spree - Spree is an open source e-commerce framework for Ruby on Rails. Join us on http://slack.spreecommerce.com
- RoR eCommerce - Ruby on Rails Ecommerce platform, perfect for your small business solution.
Payments
- Active Merchant - Active Merchant is a simple payment abstraction library used in and sponsored by Shopify. It is written by Tobias Luetke, Cody Fauser, and contributors. The aim of the project is to feel natural to Ruby users and to abstract as many parts as possible away from the user to offer a consistent interface across all supported gateways.
- Stripe - Stripe is the easiest way to accept payments online. See https://stripe.com for details.
- braintree - Ruby library for integrating with the Braintree Gateway
- stripe_event - Stripe webhook integration for Rails applications.
- adyen - Package to simplify including the Adyen payments services into a Ruby on Rails application. The package provides functionality to create payment forms, handling and storing notifications sent by Adyen and consuming the SOAP services provided by Adyen. Moreover, it contains helper methods, mocks and matchers to simpify writing tests/specs for your code.
- sepa_king - Implemention of pain.001.002.03 and pain.008.002.02 (ISO 20022)
Subscription Management
Fun
Game libraries
- Gosu - 2D game development library. Gosu features easy to use and game-friendly interfaces to 2D graphics and text (accelerated by 3D hardware), sound samples and music as well as keyboard, mouse and gamepad/joystick input. Also includes demos for integration with RMagick, Chipmunk and OpenGL.
Music & MIDI
Graphics
Graphing
- chartkick - Create beautiful JavaScript charts with one line of Ruby
- Lazy high charts - Make highcharts a la ruby , works in rails 4.X / 3.X, and other ruby web frameworks
- Gruff - Beautiful graphs for one or multiple datasets. Can be used on websites or in documents.
- google_visualr - This Ruby gem, GoogleVisualr, is a wrapper around the Google Chart Tools that allows anyone to create the same beautiful charts with just Ruby; you don't have to write any JavaScript at all.
- highcharts-rails - Gem that includes Highcharts (Interactive JavaScript charts for your web projects), in the Rails Asset Pipeline introduced in Rails 3.1
Image Processing
- chunky_png - This pure Ruby library can read and write PNG images without depending on an external image library, like RMagick. It tries to be memory efficient and reasonably fast. It supports reading and writing all PNG variants that are defined in the specification, with one limitation: only 8-bit color depth is supported. It supports all transparency, interlacing and filtering options the PNG specifications allows. It can also read and write textual metadata from PNG files. Low-level read/write access to PNG chunks is also possible. This library supports simple drawing on the image canvas and simple operations like alpha composition and cropping. Finally, it can import from and export to RMagick for interoperability. Also, have a look at OilyPNG at http://github.com/wvanbergen/oily_png. OilyPNG is a drop in mixin module that implements some of the ChunkyPNG algorithms in C, which provides a massive speed boost to encoding and decoding.
- MiniMagick - Manipulate images with minimal use of memory via ImageMagick / GraphicsMagick
- RMagick - RMagick is an interface between Ruby and ImageMagick.
QR Codes
- rqrcode - rQRCode is a library for encoding QR Codes. The simple interface allows you to create QR Code data structures ready to be displayed in the way you choose.
Visualizing Data
- Raphael - JavaScript Vector Library
- Ruby-processing - Ruby-Processing is a ruby wrapper for the processing-2.0 art framework. This version supports processing-2.2.1, and uses jruby-complete-1.7.25 or an installed jruby as the glue between ruby and java. Use both processing libraries and ruby gems in your sketches. The "watch" mode, provides a nice REPL-ish way to work on your processing sketches. Features a polyglot maven build, opening the way to use/test latest jruby.
HTML & Markup
Breadcrumb Builders
Form Builders
- Simple Form - Forms made easy!
- Formtastic - A Rails form builder plugin/gem with semantically rich and accessible markup
- cocoon - Unobtrusive nested forms handling, using jQuery. Use this and discover cocoon-heaven.
- bootstrap_form - bootstrap_form is a rails form builder that makes it super easy to create beautiful-looking forms using Twitter Bootstrap 3+
Markup processors
- Markup - Small command line tool that reads Markdown files and outputs HTML
- Redcarpet - A fast, safe and extensible Markdown to (X)HTML parser
- kramdown - kramdown is yet-another-markdown-parser but fast, pure Ruby, using a strict syntax definition and supporting several common extensions.
- vkhater-redcarpet - A fast, safe and extensible Markdown to (X)HTML parser
- RedCloth - Textile parser for Ruby.
- Rdiscount - Fast Implementation of Gruber's Markdown in C
- pandoc-ruby - Ruby wrapper for Pandoc
Microformats
Rails Menu Builders
- Simple-navigation - With the simple-navigation gem installed you can easily create multilevel navigations for your Rails, Sinatra or Padrino applications. The navigation is defined in a single configuration file. It supports automatic as well as explicit highlighting of the currently active navigation through regular expressions.
Rails Wizards
- Wicked - Wicked is a Rails engine for producing easy wizard controllers
Syntax Highlighting
- coderay - Fast and easy syntax highlighting for selected languages, written in Ruby. Comes with RedCloth integration and LOC counter.
- rouge - Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
Table Builders
- datagrid - This allows you to easily build datagrid aka data tables with sortable columns and filters
- wice_grid - A Rails grid plugin to create grids with sorting, pagination, and filters generated automatically based on column types. The contents of the cell are up for the developer, just like one does when rendering a collection via a simple table. WiceGrid automates implementation of filters, ordering, paginations, CSV export, and so on. Ruby blocks provide an elegant means for this.
Template Engines
- Tilt - Generic interface to multiple Ruby template engines
- Haml - Haml (HTML Abstraction Markup Language) is a layer on top of HTML or XML that's designed to express the structure of documents in a non-repetitive, elegant, and easy way by 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.
- Slim - Slim is a template language whose goal is reduce the syntax to the essential parts without becoming cryptic.
- Liquid - A secure, non-evaling end user template engine with aesthetic markup.
- temple - Template compilation framework in Ruby
- 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.
- handlebars_assets - A Railties Gem to compile hbs assets
- Curly - A view layer for your Rails apps that separates structure and logic.
JavaScript
JavaScript Runtimes
JavaScript Testing
- Jasmine - Test your JavaScript without any framework dependencies, in any environment, and with a nice descriptive syntax.
- Testswarm - Distributed continuous integration testing for JavaScript.
- konacha - Konacha is a Rails engine that allows you to test your JavaScript with the mocha test framework and chai assertion library. It is similar to Jasmine and Evergreen, but does not attempt to be framework agnostic. By sticking with Rails, Konacha can take full advantage of features such as the asset pipeline and engines.
- Evergreen - Run Jasmine JavaScript unit tests, integrate them into Ruby applications.
JavaScript Tools
- Uglifier - Uglifier minifies JavaScript files by wrapping UglifyJS to be accessible in Ruby
- gon - If you need to send some data to your js files and you don't want to do this with long way trough views and parsing - use this force!
- opal - Ruby runtime and core library for JavaScript.
- paloma - Page-specific javascript for Rails done right
- opal-rails - Rails bindings for opal JS engine
Prototype Replacements
Rails In-Place Editing
- BestInPlace - BestInPlace is a jQuery script and a Rails helper that provide the method best_in_place to display any object field easily editable for the user by just clicking on it. It supports input data, text data, boolean data and custom dropdown data. It works with RESTful controllers.
Maintenance & Monitoring
App Instrumentation
- New Relic RPM - New Relic is a performance management system, developed by New Relic, Inc (http://www.newrelic.com). New Relic provides you with deep information about the performance of your web application as it runs in production. The New Relic Ruby Agent is dual-purposed as a either a Gem or plugin, hosted on https://github.com/newrelic/rpm/
- dashing - This framework lets you build & easily layout dashboards with your own custom widgets. Use it to make a status boards for your ops team, or use it to track signups, conversion rates, or whatever else metrics you'd like to see in one spot. Included with the framework are ready-made widgets for you to use or customize. All of this code was extracted out of a project at Shopify that displays dashboards on TVs around the office.
- better_errors - Provides a better error page for Rails and other Rack apps. Includes source code inspection, a live REPL and local/instance variable inspection for all stack frames.
- bullet - help to kill N+1 queries and unused eager loading.
- meta_request - Supporting gem for Rails Panel (Google Chrome extension for Rails development)
- peek - Take a peek into your Rails application.
- Rails-footnotes - Every Rails page has footnotes that gives information about your application and links back to your editor.
- dashing-rails - The exceptionally handsome dashboard framework for Rails.
- Scout-plugins - Plugins for the Scout Server Monitoring and Reporting Tool
- rack-insight - Debugging toolbar for Rack applications implemented as middleware. Based on logical-insight and rack-bug.
- harness - Collect high level application performance metrics and forward them for analysis
Exception Notification
- Errbit - The open source error catcher that's Airbrake API compliant
- Airbrake - Airbrake is an online tool that provides robust exception tracking in any of your Ruby applications. In doing so, it allows you to easily review errors, tie an error to an individual piece of code, and trace the cause back to recent changes. The Airbrake dashboard provides easy categorization, searching, and prioritization of exceptions so that when errors occur, your team can quickly determine the root cause. Additionally, this gem includes integrations with such popular libraries and frameworks as Rails, Sinatra, Resque, Sidekiq, Delayed Job, ActiveJob and many more.
- Exception notification - Exception notification for Rails apps
- rollbar - Easy and powerful exception tracking for Ruby
- Honeybadger - Make managing application errors a more pleasant experience.
- Bugsnag - Ruby notifier for bugsnag.com
Log Analysis
- logstash - logstash - logs/event transport, processing, management, search.
- Graylog2 - Free and open source log management
Logging
- Logging - Logging is a flexible logging library for use in Ruby programs based on the design of Java's log4j library. It features a hierarchical logging system, custom level names, multiple output destinations per log event, custom formatting, and more.
- lograge - Tame Rails' multi-line logging into a single line per request
- gelf - Library to send GELF messages to Graylog logging server. Supports plain-text, GELF messages and exceptions via UDP and TCP.
- mongodb_logger - MongoDB logger for Rails
- httplog - Log outgoing HTTP requests made from your application. Helpful for tracking API calls of third party gems that don't provide their own log output.
Maintenance Mode
- turnout - Turnout makes it easy to put your Rails application into maintenance mode
Server Monitoring
- God - An easy to configure, easy to extend monitoring framework written in Ruby.
- sensu - A monitoring framework that aims to be simple, malleable, and scalable.
- Bluepill - Bluepill keeps your daemons up while taking up as little resources as possible. After all you probably want the resources of your server to be used by whatever daemons you are running rather than the thing that's supposed to make sure they are brought back up, should they die or misbehave.
- Eye - Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI) >= 1.9.3-p194. Uses Celluloid and Celluloid::IO.
Package & Dependency Management
Bundler Tools
- Appraisal - Appraisal integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called "appraisals."
Dependency Management
- Bundler - Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably
- berkshelf - Manages a Cookbook's, or an Application's, Cookbook dependencies
- brewdler - Bundler for non-Ruby dependencies from Homebrew
Gem Hosting
- geminabox - A sinatra based gem hosting app, with client side gem push style functionality.
Packaging Systems
Packaging to Executables
Provision, Deploy & Host
Amazon Web Services
- aws-sdk - The official AWS SDK for Ruby. Provides both resource oriented interfaces and API clients for AWS services.
- Fog - The Ruby cloud services library. Supports all major cloud providers including AWS, Rackspace, Linode, Blue Box, StormOnDemand, and many others. Full support for most AWS services including EC2, S3, CloudWatch, SimpleDB, ELB, and RDS.
- S3 - S3 library provides access to Amazon's Simple Storage Service. It supports both: European and US buckets through REST API.
Asset Distribution
- asset_sync - After you run assets:precompile your compiled assets will be synchronised with your S3 bucket.
Asset Management
- Jammit - Jammit is 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.
- css_splitter - Gem for splitting up stylesheets that go beyond the IE limit of 4095 selectors, for Rails 3.1+ apps using the Asset Pipeline.
- half-pipe - Grunt-based workflow for your Rails assets
Backups
- Backup - Backup is a RubyGem, written for UNIX-like operating systems, that allows you to easily perform backup operations on both your remote and local environments. It provides you with an elegant DSL in Ruby for modeling your backups. Backup has built-in support for various databases, storage protocols/services, syncers, compressors, encryptors and notifiers which you can mix and match. It was built with modularity, extensibility and simplicity in mind.
Continuous Integration
Deployment Automation
- Capistrano - Capistrano is a utility and framework for executing commands in parallel on multiple remote machines, via SSH.
- Heroku - Client library and command-line tool to deploy and manage apps on Heroku.
- mina - Really fast deployer and server automation tool.
- Moonshine - Simple Rails deployment and configuration management. 15 minute deploys of Rails 2, 3, or 4 apps.
- heroku_san - Manage multiple Heroku instances/apps for a single Rails app using Rake
- dandelion - Incremental Git repository deployment
- paratrooper - Library to create task for deployment to Heroku
System Provisioning
- Vagrant - Vagrant is a tool for building and distributing development environments.
- Puppet - Puppet, an automated configuration management tool
- Chef - A systems integration framework, built to bring the benefits of configuration management to your entire infrastructure.
- Babushka - Test-driven sysadmin.
Web servers
- 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. Slow clients should only be served by placing a reverse proxy capable of fully buffering both the the request and response in between unicorn and slow clients.
- Puma - Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server for Ruby/Rack applications. Puma is intended for use in both development and production environments. In order to get the best throughput, it is highly recommended that you use a Ruby implementation with real threads like Rubinius or JRuby.
- Passenger - A modern web server and application server for Ruby, Python and Node.js, optimized for performance, low memory usage and ease of use.
- Pow - Manipulating files and directories in Ruby is boring and tedious -- it's missing POW! Pow treats files and directories as ruby objects giving you more power and flexibility.
- Trinidad - Trinidad allows you to run Rails or Rack applications within an embedded Apache Tomcat container. Serves your requests with the elegance of a cat !
Rails Plugins
Rails Activity Feeds
- public_activity - Easy activity tracking for your ActiveRecord models. Provides Activity model with details about actions performed by your users, like adding comments, responding etc.
- unread - This gem creates a scope for unread objects and adds methods to mark objects as read
Rails Admin Interfaces
- ActiveAdmin - The administration framework for Ruby on Rails.
- Rails Admin - RailsAdmin is a Rails engine that provides an easy-to-use interface for managing your data.
- ActiveScaffold - Save time and headaches, and create a more easily maintainable set of pages, with ActiveScaffold. ActiveScaffold handles all your CRUD (create, read, update, delete) user interface needs, leaving you more time to focus on more challenging (and interesting!) problems.
- Typus - Ruby on Rails Admin Panel (Engine) to allow trusted users edit structured content.
Rails App Templates
- Suspenders - Suspenders is a base Rails project that you can upgrade. It is used by thoughtbot to get a jump start on a working app. Use Suspenders if you're in a rush to build something amazing; don't use it if you like missing deadlines.
- rails_apps_composer - A gem with recipes to create Rails application templates you can use to generate Rails starter apps.
Rails Class Diagrams
- rails-erd - Automatically generate an entity-relationship diagram (ERD) for your Rails models.
-
railroady - Ruby on Rails 3/4 model and controller UML class diagram generator. Originally based on the 'railroad' plugin and contributions of many others. (
brew install graphviz
before use!)
Rails File Uploads
- Paperclip - Easy upload management for ActiveRecord
- Carrierwave - Upload files in your Ruby applications, map them to a range of ORMs, store them on different backends.
- Dragonfly - Dragonfly is a framework that enables on-the-fly processing for any content type. It is especially suited to image handling. Its uses range from image thumbnails to standard attachments to on-demand text generation.
- refile - Simple and powerful file upload library
Rails Permalinks & Slugs
- FriendlyId - FriendlyId is the "Swiss Army bulldozer" of slugging and permalink plugins for Active Record. It lets you create pretty URLs and work with human-friendly strings as if they were numeric ids.
- Stringex - Some [hopefully] useful extensions to Ruby's String class. Stringex is made up of three libraries: ActsAsUrl [permalink solution with better character translation], Unidecoder [Unicode to ASCII transliteration], and StringExtensions [miscellaneous helper methods for the String class].
Rails Presenters
- Cells - Cells replaces partials and helpers with OOP view models, giving you proper encapsulation, inheritance, testability and a cleaner view architecture.
- ActiveDecorator - A simple and Rubyish view helper for Rails
- display_case - An implementation of the Exhibit pattern, as described in Objects on Rails
Rails Subdomains
Recommendation Engines
Reputation Engines
- merit - Manage badges, points and rankings (reputation) in your Rails app.
State Machines
- AASM - AASM is a continuation of the acts-as-state-machine rails plugin, built for plain Ruby objects.
- statesman - A statesmanlike state machine library
- Transitions - Lightweight state machine extracted from ActiveModel
- simple_states - [description]
User Messaging Systems
- mailboxer - A Rails engine that allows any model to act as messageable, adding the ability to exchange messages with any other messageable model, even different ones. It supports the use of conversations with two or more recipients to organize the messages. You have a complete use of a mailbox object for each messageable model that manages an inbox, sentbox and trash for conversations. It also supports sending notifications to messageable models, intended to be used as system notifications.
- maktoub - A simple newsletter engine for rails.
Security
Encryption
- Attr encrypted - Generates attr_accessors that encrypt and decrypt attributes transparently
- symmetric-encryption - Transparently encrypt ActiveRecord, Mongoid, and MongoMapper attributes. Encrypt passwords in configuration files. Encrypt entire files at rest.
LDAP
- net-ldap - Net::LDAP for Ruby (also called net-ldap) implements client access for the Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for accessing distributed directory services. Net::LDAP is written completely in Ruby with no external dependencies. It supports most LDAP client features and a subset of server features as well. Net::LDAP has been tested against modern popular LDAP servers including OpenLDAP and Active Directory. The current release is mostly compliant with earlier versions of the IETF LDAP RFCs (2251-2256, 2829-2830, 3377, and 3771). Our roadmap for Net::LDAP 1.0 is to gain full <em>client</em> compliance with the most recent LDAP RFCs (4510-4519, plutions of 4520-4532).
Rails Authentication
- Devise - Flexible authentication solution for Rails with Warden
- OmniAuth - A generalized Rack framework for multiple-provider authentication.
- Authlogic - A clean, simple, and unobtrusive ruby authentication solution.
- Sorcery - Provides common authentication needs such as signing in/out, activating by email and resetting password.
- Clearance - Rails authentication & authorization with email & password.
- doorkeeper - Doorkeeper is an OAuth 2 provider for Rails and Grape.
- switch_user - Easily switch current user to speed up development
- monban - simple rails authentication
- rack-cas - Simple CAS authentication for Rails, Sinatra or any Rack-based site
Rails Authorization
- pundit - Object oriented authorization for Rails applications
- cancancan - Continuation of the simple authorization solution for Rails which is decoupled from user roles. All permissions are stored in a single location.
- rolify - Very simple Roles library without any authorization enforcement supporting scope on resource objects (instance or class). Supports ActiveRecord and Mongoid ORMs.
- authority - Authority helps you authorize actions in your Rails app. It's ORM-neutral and has very little fancy syntax; just group your models under one or more Authorizer classes and write plain Ruby methods on them.
- Acl9 - Role-based authorization system for Rails with a concise DSL for securing your Rails application. Acl9 makes it easy to get security right for your app, the access control code sits right in your controller, the syntax is very easy to understand, and acl9 makes it easy to test your access rules.
Rails Captcha
- Recaptcha - Helpers for the reCAPTCHA API
Security Tools
-
Loofah - Loofah is a general library for manipulating and transforming HTML/XML documents and fragments. It's built on top of Nokogiri and libxml2, so it's fast and has a nice API. Loofah excels at HTML sanitization (XSS prevention). It includes some nice HTML sanitizers, which are based on HTML5lib's whitelist, so it most likely won't make your codes less secure. (These statements have not been evaluated by Netexperts.) ActiveRecord extensions for sanitization are available in the
loofah-activerecord
gem (see https://github.com/flavorjones/loofah-activerecord). - brakeman - Brakeman detects security vulnerabilities in Ruby on Rails applications via static analysis.
- active_model_otp - Adds methods to set and authenticate against one time passwords. Inspired in AM::SecurePassword"
- json-jwt - JSON Web Token and its family (JSON Web Signature, JSON Web Encryption and JSON Web Key) in Ruby
Spam Detection
Testing
A/B Testing
Acceptance Test Frameworks
- Cucumber - Behaviour Driven Development with elegance and joy
- Turnip - Provides the ability to define steps and run Gherkin files from with RSpec
Browser testing
- Capybara - Capybara is an integration testing tool for rack based web applications. It simulates how a user would interact with a website
- selenium-webdriver - WebDriver is a tool for writing automated tests of websites. It aims to mimic the behaviour of a real user, and as such interacts with the HTML of the application.
- poltergeist - Poltergeist is a driver for Capybara that allows you to run your tests on a headless WebKit browser, provided by PhantomJS.
- capybara-webkit - Headless Webkit driver for Capybara
- headless - Headless is a Ruby interface for Xvfb. It allows you to create a headless display straight from Ruby code, hiding some low-level action.
- watir-webdriver - WebDriver-backed Watir
- SitePrism - SitePrism gives you a simple, clean and semantic DSL for describing your site using the Page Object Model pattern, for use with Capybara
Continuous Testing
- Guard - Guard is a command line tool to easily handle events on file system modifications.
- guard-rspec - Guard::RSpec automatically run your specs (much like autotest).
Cucumber Steps
- email_spec - Easily test email in RSpec, Cucumber, and MiniTest
- aruba - Extension for popular TDD and BDD frameworks like "Cucumber", "RSpec" and "Minitest" to make testing commandline applications meaningful, easy and fun.
Cucumber Tools
Distributed Testing
- spring - Preloads your application so things like console, rake and tests run faster
- Parallel tests - Run Test::Unit / RSpec / Cucumber / Spinach in parallel
- zeus - Boot any rails app in under a second
- test-queue - minitest/rspec parallel test runner for CI environments
- zeus-parallel_tests - Integration for zeus and parallel_tests
Mocking
- rspec-mocks - RSpec's 'test double' framework, with support for stubbing and mocking
- RR - RR is a test double framework that features a rich selection of double techniques and a terse syntax.
Mocking Web Requests
- Webmock - WebMock allows stubbing HTTP requests and setting expectations on HTTP requests.
- VCR - Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
- Jquery-mockjax - The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses
Rails Fixture Replacement
- Factory Girl - factory_girl provides a framework and DSL for defining and using factories - less error-prone, more explicit, and all-around easier to work with than fixtures.
- Fabrication - Fabrication is an object generation framework for ActiveRecord, Mongoid, DataMapper, Sequel, or any other Ruby object.
- FixtureBuilder - FixtureBuilder allows testers to use their existing factories, like FactoryGirl, to generate high performance fixtures that can be shared across all your tests
- to_factory - Autogenerate and append/create factory_girl definitions from the console
Random Data Generation
- Faker - Faker, a port of Data::Faker from Perl, is used to easily generate fake data: names, addresses, phone numbers, etc.
- ffaker - Ffaker generates dummy data.
- data-anonymization - Data anonymization tool for RDBMS and MongoDB databases
Testing Rails Engines
Test::Unit Extensions
Time Warping
- Timecop - A gem providing "time travel" and "time freezing" capabilities, making it dead simple to test time-dependent code. It provides a unified method to mock Time.now, Date.today, and DateTime.now in a single call.
Unit Test Frameworks
- Minitest - minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking. "I had a class with Jim Weirich on testing last week and we were allowed to choose our testing frameworks. Kirk Haines and I were paired up and we cracked open the code for a few test frameworks... I MUST say that minitest is very readable / understandable compared to the 'other two' options we looked at. Nicely done and thank you for helping us keep our mental sanity." -- Wayne E. Seguin minitest/test is a small and incredibly fast unit testing framework. It provides a rich set of assertions to make your tests clean and readable. minitest/spec is a functionally complete spec engine. It hooks onto minitest/test and seamlessly bridges test assertions over to spec expectations. minitest/benchmark is an awesome way to assert the performance of your algorithms in a repeatable manner. Now you can assert that your newb co-worker doesn't replace your linear algorithm with an exponential one! minitest/mock by Steven Baker, is a beautifully tiny mock (and stub) object framework. minitest/pride shows pride in testing and adds coloring to your test output. I guess it is an example of how to write IO pipes too. :P minitest/test is meant to have a clean implementation for language implementors that need a minimal set of methods to bootstrap a working test suite. For example, there is no magic involved for test-case discovery. "Again, I can't praise enough the idea of a testing/specing framework that I can actually read in full in one sitting!" -- Piotr Szotkowski Comparing to rspec: rspec is a testing DSL. minitest is ruby. -- Adam Hawkins, "Bow Before MiniTest" minitest doesn't reinvent anything that ruby already provides, like: classes, modules, inheritance, methods. This means you only have to learn ruby to use minitest and all of your regular OO practices like extract-method refactorings still apply.
- RSpec - BDD for Ruby
- test-unit - Test::Unit (test-unit) is unit testing framework for Ruby, based on xUnit principles. These were originally designed by Kent Beck, creator of extreme programming software development methodology, for Smalltalk's SUnit. It allows writing tests, checking results and automated testing in Ruby.
Time & Space
Calendars
- icalendar - Implements the iCalendar specification (RFC-5545) in Ruby. This allows for the generation and parsing of .ics files, which are used by a variety of calendaring applications.
Geocoding & Maps
- Geocoder - Provides object geocoding (by street or IP address), reverse geocoding (coordinates to street address), distance queries for ActiveRecord and Mongoid, result caching, and more. Designed for Rails but works with Sinatra and other Rack frameworks too.
- Geokit - Geokit provides geocoding and distance calculation in an easy-to-use API
- gmaps4rails - Enables easy Google map + overlays creation.
- Geokit-rails - Official Geokit plugin for Rails/ActiveRecord. Provides location-based goodness for your Rails app. Requires the Geokit gem.
- activerecord-postgis-adapter - ActiveRecord connection adapter for PostGIS. It is based on the stock PostgreSQL adapter, and adds built-in support for the spatial extensions provided by PostGIS. It uses the RGeo library to represent spatial data in Ruby.
- leaflet-rails - This gem provides the leaflet.js map display library for your Rails 4 application.
I18n
- i18n-js - It's a small library to provide the Rails I18n translations on the Javascript.
- globalize - Rails I18n de-facto standard library for ActiveRecord model/data translation.
-
i18n-tasks - i18n-tasks helps you find and manage missing and unused translations. It analyses code statically for key usages, such as
I18n.t('some.key')
, in order to report keys that are missing or unused, pre-fill missing keys (optionally from Google Translate), and remove unused keys. - R18n - I18n tool to translate your Ruby application.
- delocalize - Delocalize is a tool for parsing localized dates/times and numbers.
- numbers_and_words - Convert numbers to words using I18N.
- localeapp - Synchronizes i18n translation keys and content with localeapp.com so you don't have to manage translations by hand.
Natural Language Date Parsing
Recurring Events
- Ice cube - ice_cube is a recurring date library for Ruby. It allows for quick, programatic expansion of recurring date rules.
- Recurrence - A simple library to handle recurring events
Web Apps, Services & Interaction
API Builders
- jbuilder - Create JSON structures via a Builder-style DSL
- Grape - A Ruby framework for rapid API development with great conventions.
- active_model_serializers - ActiveModel::Serializers allows you to generate your JSON in an object-oriented and convention-driven manner.
- rabl - General ruby templating with json, bson, xml and msgpack support
- roar - Object-oriented representers help you defining nested REST API documents which can then be rendered and parsed using one and the same concept.
- rocket_pants - Rocket Pants adds JSON API love to Rails and ActionController, making it simpler to build API-oriented controllers.
- versioncake - Render versioned views automagically based on the clients requested version.
API Clients
- Twitter - A Ruby interface to the Twitter API.
- koala - Koala is a lightweight, flexible Ruby SDK for Facebook. It allows read/write access to the social graph via the Graph and REST APIs, as well as support for realtime updates and OAuth and Facebook Connect authentication. Koala is fully tested and supports Net::HTTP and Typhoeus connections out of the box and can accept custom modules for other services.
- octokit - Simple wrapper for the GitHub API
- github_api - Ruby client that supports all of the GitHub API methods. It's build in a modular way, that is, you can either instantiate the whole api wrapper Github.new or use parts of it e.i. Github::Client::Repos.new if working solely with repositories is your main concern. Intuitive query methods allow you easily call API endpoints.
- Linkedin - Ruby wrapper for the LinkedIn API
- gibbon - A wrapper for MailChimp API 3.0
- jenkins_api_client - This is a simple and easy-to-use Jenkins Api client with features focused on automating Job configuration programaticaly and so forth
- Tweetstream - TweetStream is a simple wrapper for consuming the Twitter Streaming API.
- Amazon-ecs - Generic Amazon Product Advertising Ruby API.
- video_info - Get video info from Dailymotion, Vimeo, VK and YouTube url.
- google_calendar - A minimal wrapper around the google calendar API
- vacuum - A wrapper to the Amazon Product Advertising API
- fedex - Provides an interface to Fedex Web Services
- vk-ruby - VK-RUBY gives you full access to all vk.com API features. Has several types of method naming and methods calling, optional authorization, file uploading, logging, irb integration, parallel method calling and any faraday-supported http adapter of your choice.
Atom & RSS Feed Parsing
- Feedzirra - This project has been renamed to Feedjira, find out more at feedjira.com.
HTML parsing
- Nokogiri - Nokogiri (鋸) is an HTML, XML, SAX, and Reader parser. Among Nokogiri's many features is the ability to search documents via XPath or CSS3 selectors.
HTTP clients
- Rest-client - A simple HTTP and REST client for Ruby, inspired by the Sinatra microframework style of specifying actions: get, put, post, delete.
- faraday - HTTP/REST API client library.
- Httparty - Makes http fun! Also, makes consuming restful web services dead easy.
- Excon - EXtended http(s) CONnections
- httpclient - gives something like the functionality of libwww-perl (LWP) in Ruby
- Mechanize - The Mechanize library is used for automating interaction with websites. Mechanize automatically stores and sends cookies, follows redirects, and 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.
- Curb - Curb (probably CUrl-RuBy or something) provides Ruby-language bindings for the libcurl(3), a fully-featured client-side URL transfer library. cURL and libcurl live at http://curl.haxx.se/
- HTTPI - Common interface for Ruby's HTTP libraries
- Typhoeus - Like a modern code version of the mythical beast with 100 serpent heads, Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling logic.
- em-http-request - EventMachine based, async HTTP Request client
- Patron - Ruby HTTP client library based on libcurl
- Nestful - Simple Ruby HTTP/REST client with a sane API
- hyperclient - HyperClient is a Ruby Hypermedia API client.
HTTP Pub/Sub
- websocket - Universal Ruby library to handle WebSocket protocol
- faye - Simple pub/sub messaging for the web
- tubesock - Websocket interface on Rack Hijack w/ Rails support
- websocket-rails - Seamless Ruby on Rails websocket integration.
JSON Parsers
- multi_json - A common interface to multiple JSON libraries, including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem, NSJSONSerialization, gson.rb, JrJackson, and OkJson.
- json - This is a JSON implementation as a Ruby extension in C.
- json pure - This is a JSON implementation in pure Ruby.
- oj - The fastest JSON parser and object serializer.
Multitenancy
- apartment - Apartment allows Rack applications to deal with database multitenancy through ActiveRecord
- acts_as_tenant - Integrates multi-tenancy into a Rails application in a convenient and out-of-your way manner
Rails Controller Abstractions
- DecentExposure - DecentExposure helps you program to an interface, rather than an implementation in your Rails controllers. The fact of the matter is that sharing state via instance variables in controllers promotes close coupling with views. DecentExposure gives you a declarative manner of exposing an interface to the state that controllers contain and thereby decreasing coupling and improving your testability and overall design.
SOAP Clients
- Savon - Heavy metal SOAP client
- lolsoap - A library for dealing with SOAP requests and responses. We tear our hair out so you don't have to.
Social Network Builders
- Communityengine - Adds basic social networking capabilities to your existing application, including users, blogs, photos, clippings, favorites, and more.
- omnicontacts - A generalized Rack middleware for importing contacts from major email providers.
URL Rewriting
User Agent Detection
- browser - Do some browser detection with Ruby.
- user_agent_parser - A simple, comprehensive Ruby gem for parsing user agent strings with the help of BrowserScope's UA database
Web Analytics
- legato - Access the Google Analytics Core Reporting and Management APIs with Ruby. Create models for metrics and dimensions. Filter your data to tell you what you need.
- google-analytics-rails - Rails helpers to manage google analytics tracking
- PageRankr - Easy way to retrieve Google Page Rank, Alexa Rank, backlink counts, index counts and different types of social signals
- rack-google-analytics - Simple Rack middleware for implementing google analytics tracking in your Ruby-Rack based project. Supports synchronous and asynchronous insertion and configurable load options.
Web App Frameworks
- Ruby on 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.
- Rack - Rack provides a minimal, modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call. Also see http://rack.github.io/.
- Sinatra - Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort.
- Padrino - The Godfather of Sinatra provides a full-stack agnostic framework on top of Sinatra
- Cuba - Cuba is a microframework for web applications.
- Camping - minature rails for stay-at-home moms
- pakyow - Modern web framework for Ruby
- Scorched - A light-weight Sinatra-inspired web framework for web sites and applications of any size.
Web Content Scrapers
- metainspector - MetaInspector lets you scrape a web page and get its links, images, texts, meta tags...
- link_thumbnailer - Ruby gem generating thumbnail images from a given URL.
- cobweb - Cobweb is a web crawler that can use resque to cluster crawls to quickly crawl extremely large sites which is much more performant than multi-threaded crawlers. It is also a standalone crawler that has a sophisticated statistics monitoring interface to monitor the progress of the crawls.
XML Mapping
- Gyoku - Gyoku translates Ruby Hashes to XML