# Awesome Ruby A curated list of awesome Ruby frameworks, libraries and resources. Inspired by [awesome-php](https://github.com/ziadoz/awesome-php) & [awesome-python](https://github.com/vinta/awesome-python). - [Awesome Ruby](#awesome-ruby) - [Environment Management](#environment-management) - [Package Management](#package-management) - [Distribution](#distribution) - [Files](#files) - [Date and Time](#date-and-time) - [Text Processing](#text-processing) - [Natural Language Processing](#natural-language-processing) - [Documentation](#documentation) - [Configuration](#configuration) - [Command-line Tools](#command-line-tools) - [Imagery](#imagery) - [Audio](#audio) - [Video](#video) - [Geolocation](#geolocation) - [HTTP](#http) - [Database](#database) - [Database Drivers](#database-drivers) - [ORM](#orm) - [Web Frameworks](#web-frameworks) - [CMS](#cms) - [RESTful API](#restful-api) - [Authentication and OAuth](#authentication-and-oauth) - [Template Engine](#template-engine) - [Queue](#queue) - [Search](#search) - [Asset Management](#asset-management) - [Caching](#caching) - [Email](#email) - [Internationalization](#internationalization) - [URL Manipulation](#url-manipulation) - [HTML Manipulation](#html-manipulation) - [Web Crawling](#web-crawling) - [Web Content Extracting](#web-content-extracting) - [Downloader](#downloader) - [Forms](#forms) - [Data Validation](#data-validation) - [Anti-spam](#anti-spam) - [Tagging](#tagging) - [Build Tools](#build-tools) - [Admin Panels](#admin-panels) - [Processes and Threads](#processes-and-threads) - [Networking](#networking) - [WebSocket](#websocket) - [Cryptography](#cryptography) - [GUI](#gui) - [Game Development](#game-development) - [Logging](#logging) - [Testing](#testing) - [Code Analysis and Linter](#code-analysis-and-linter) - [Debugging Tools](#debugging-tools) - [Science and Data Analysis](#science-and-data-analysis) - [Data Visualization](#data-visualization) - [Machine Learning](#machine-learning) - [Functional Programming](#functional-programming) - [MapReduce](#mapreduce) - [Third-party APIs](#third-party-apis) - [DevOps Tools](#devops-tools) - [Foreign Function Interface](#foreign-function-interface) - [High Performance](#high-performance) - [Algorithms and Design Patterns](#algorithms-and-design-patterns) - [Miscellaneous](#miscellaneous) - [Editor Plugins](#editor-plugins) - [Resources](#resources) - [Websites](#websites) - [Weekly](#weekly) - [Twitter](#twitter) ## Environment Management *Libraries for Ruby version and environment management.* * [rvm](https://rvm.io/) - Ruby Version Manager * [rbenv](http://rbenv.org/) - Groom your app’s Ruby environment ## Package Management *Libraries for package and dependency management.* * [RubyGems](https://rubygems.org/) - RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries ## Distribution *Libraries to create packaged executables for release distribution.* ## Files *Libraries for file manipulation and MIME type detection.* ## Date and Time *Libraries for working with dates and times.* ## Text Processing *Libraries for parsing and manipulating texts.* * General * Specific Formats * Parser ## Natural Language Processing *Libraries for working with human languages.* ## Documentation *Libraries for generating project documentation.* ## Configuration *Libraries for storing configuration options.* ## Command-line Tools *Libraries for building command-line application.* * Command-line Application Development * Workflow Tools ## Imagery *Libraries for manipulating images.* ## Audio *Libraries for manipulating audio.* ## Video *Libraries for manipulating video and GIFs.* ## Geolocation *Libraries for geocoding addresses and working with latitudes and longitudes.* ## HTTP *Libraries for working with HTTP.* ## Database Drivers *Libraties for connecting and operating databases.* * Relational Databases * NoSQL Databases ## ORM *Libraries that implement Object-Relational Mapping or datamapping techniques.* * Relational Databases * [ActiveRecord](https://www.ruby-toolbox.com/projects/activerecord) - Databases on Rails. Build a persistent domain model by mapping database tables to Ruby classes * [DataMapper](http://datamapper.org/) - DataMapper is an Object Relational Mapper written in Ruby. The goal is to create an ORM which is fast, thread-safe and feature rich. * [Sequel](http://sequel.jeremyevans.net/) - The Database Toolkit for Ruby * NoSQL Databases * [Mongoid](http://mongoid.org) - Mongoid (pronounced mann-goyd) is an Object-Document-Mapper (ODM) for MongoDB written in Ruby. ## Web Frameworks *Web development frameworks.* * [Ruby On Rails](http://rubyonrails.org/) - Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity * [Sinatra](http://www.sinatrarb.com/) - Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort. * [Padrino](http://www.padrinorb.com/) - The Godfather of Sinatra provides a full-stack agnostic framework on top of Sinatra * [Cramp](http://cramp.in/) - Cramp is a fully asynchronous real-time web application framework in Ruby ## CMS *Content management systems* * [Refinery](http://refinerycms.com/) * [Browser](http://www.browsercms.org/) * [Locomotive](http://www.locomotivecms.com/) * [Radiant](http://radiantcms.org/) * [Nesta](http://nestacms.com/) ## RESTful API *Libraries for developing RESTful APIs.* * [Grape](http://intridea.github.io/grape/) - An opinionated micro-framework for creating REST-like APIs in Ruby. ## Authentication and OAuth *Libraries for implementing authentications schemes.* ## Template Engine *Libraries and tools for templating and lexing.* ## Queue *Libraries for working with event and task queues.* ## Search *Libraries and software for indexing and performing search queries on data.* ## Asset Management *Tools for managing, compressing and minifying website assets.* ## Caching *Libraries for caching data.* ## Email *Libraries for sending and parsing email.* ## Internationalization *Libraries for woking with i18n.* ## URL Manipulation *Libraries for parsing URLs.* ## HTML Manipulation *Libraries for working with HTML and XML.* ## Web Crawling *Libraries for scraping websites.* ## Web Content Extracting *Libraries for extracting web contents.* ## Downloader *Libraries for downloading.* ## Forms *Libraries for working with forms.* ## Data Validation *Libraries for validating data. Used for forms in many cases.* ## Anti-spam *Libraries for fighting spam.* ## Tagging *Libraries for tagging items.* ## Build Tools *Compile software from source code.* ## Admin Panels *Libraries for administrative interfaces.* ## Processes and Threads *Libraries for woking with processes or threads* ## Networking *Libraries for network programming.* ## WebSocket *Libraries for woking with WebSocket.* ## Cryptography ## GUI *Libraries for working with graphical user interface applications.* ## Game Development *Awesome game development libraries.* ## Logging *Libraries for generating and working with log files.* ## Testing *Libraries for testing codebases and generating test data.* * Testing Frameworks * [RSpec](http://rspec.info/) - BDD for Ruby * [MiniTest](https://github.com/seattlerb/minitest) - minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking * Mock * [RSpec-mocks](https://github.com/rspec/rspec-mocks) - RSpec's 'test double' framework, with support for stubbing and mocking * [Mocha](http://gofreerange.com/mocha/docs/) - Mocking and stubbing library with JMock/SchMock syntax, which allows mocking and stubbing of methods on real (non-mock) classes. * [FlexMock](https://github.com/jimweirich/flexmock) - Flexible mocking for Ruby testing * Fake Data * [Faker](https://github.com/stympy/faker) - A library for generating fake data such as names, addresses, and phone numbers * [ffaker](https://github.com/emmanueloga/ffaker) - Faker Refactored. * [Forgery](https://github.com/sevenwire/forgery) - Easy and customizable generation of forged data. * Code Coverage * Load Testing * Error Handler ## Code Analysis and Linter *Libraries and tools for analysing, parsing and manipulation codebases.* * [Rubocop](https://github.com/bbatsov/rubocop) - A Ruby static code analyzer, based on the community Ruby style guide. * [ruby-lint](https://github.com/YorickPeterse/ruby-lint) - ruby-lint is a static code analysis tool for Ruby ## Debugging Tools *Libraries for debugging and developing.* * [byebug](https://github.com/deivid-rodriguez/byebug) - Debugging in Ruby 2 * [debugger](https://github.com/cldwalker/debugger) - port of ruby-debug that works on 1.9.2 and 1.9.3 ## Science and Data Analysis *Libraries for scientific computing and data analyzing.* ## Data Visualization *Libraries for visualizing data.* ## Machine Learning *Libraries for Machine Learning.* ## Functional Programming ## MapReduce *Framworks and libraries for MapReduce.* ## Third-party APIs *Libraries for accessing third party APIs.* ## DevOps Tools *Software and libraries for DevOps.* * [Puppet](https://github.com/puppetlabs/puppet) - Server automation framework and application * [Chef](https://github.com/opscode/chef) - A systems integration framework, built to bring the benefits of configuration management to your entire infrastructure. * [Vagrant](http://www.vagrantup.com) - Vagrant is a tool for building and distributing development environments. * [Capistrano](http://www.capistranorb.com) - Remote multi-server automation tool ## Foreign Function Interface *Libraries for providing foreign function interface.* ## High Performance *Libraries for making Ruby faster.* ## Algorithms and Design Patterns *Collections of algorithms and design patterns.* ## Miscellaneous *Useful libraries or tools that don't fit in the categories above.* ## Editor Plugins *Plugins for various editors.* # Resources Where to discover new Ruby libraries. * [The Ruby Toolbox](https://www.ruby-toolbox.com/) * [RubyGems](https://www.rubygems.org) ## Websites ## Weekly ## Twitter # Contributing Your Pull requests are welcome! Let's make this the **awesomest** resource for Ruby <3