This is a curated collection of essential Ruby and Ruby on Rails resources. It was inspired by frontend-dev-bookmarks — a community-driven bookmarks collection for frontend developers. The project aims to maintain a well-structured reference equally useful both for beginners and advanced web developers. ★ stands for Editors' Choice.
Sharing and pull requests are very much appreciated!
For beginners and intermediate level developers
- ★ Eloquent Ruby by Russ Olsen.
- Programming Ruby 1.9 & 2.0 by Dave Thomas, Andy Hunt, and Chad Fowler.
- Learn Ruby The Hard Way by Zed A. Shaw. Available to pre-order at amazon.
Advancing Ruby knowledge
- ★ Ruby Under a Microscope: An Illustrated Guide to Ruby Internals by Pat Shaughnessy.
- ★ Confident Ruby: 32 Patterns for Joyful Coding by Avdi Grimm.
- Exceptional Ruby: Master the Art of Handling Failure in Ruby by Avdi Grimm.
- Metaprogramming Ruby: Program Like the Ruby Pros by Paolo Perrotta.
- The Well-Grounded Rubyist by David A. Black.
- Practical Object-Oriented Development in Ruby by Sandi Metz.
Ruby on Rails for beginners
- ★ The Rails 4 Way by Obie Fernandez and Kevin Faustino.
- Agile Web Development with Rails 4 by Sam Ruby, Dave Thomas, and David Heinemeier Hansson.
- Rails 4 in Action by Steve Klabnik, Ryan Bigg and Yehuda Katz.
Ruby on Rails, advanced level
- Crafting Rails 4 Applications: Expert Practices for Everyday Rails Development by José Valim.
- Rails AntiPatterns: Best Practice Ruby on Rails Refactoring by Chad Pytel, Tammer Saleh.
- Deploying Rails: Automate, Deploy, Scale, Maintain, and Sleep at Night by Tom Copeland, Anthony Burns.
- Multitenancy with Rails by Ryan Bigg.
Testing
- The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends by David Chelimsky, Dave Astels, Bryan Helmkamp, Dan North, Zach Dennis, Aslak Hellesoy.
- Rails 4 Test Prescriptions: Build a Healthy Codebase by Noel Rappin — a comprehensive guide to how tests can help you design and write better Rails applications. In this completely revised edition, you’ll learn why testing works and how to test effectively using Rails 4, Minitest 5, and RSpec 3, as well as popular testing libraries such as factory_girl and Cucumber.
- Continuous Testing by Ben Rady and Rod Coffin.
Other frameworks and tools
- RubyMotion by Clay Allsopp.
- Build Awesome Command-Line Applications in Ruby 2 by David Copeland
- Sinatra Book — a cookbook full of excellent tutorials and recipes for developing Sinatra web applications.
- Ruby Inside — one of the most popular Ruby blogs.
- RubyFlow — the Ruby Community Blog.
- ★ Green Ruby News
- Random Ruby and Rails tips
- ★ Practicing Ruby — delightful lessons for dedicated programmers.
- Yehuda Katz
- Sitepoint
- ★ Pluralsight Ruby Course Library.
- ★ RubyTapas by Avdi Grimm.
- ★ The Pragmatic Studio
- ★ Lynda.com
- Ruby screencasts at TutsPlus.com
- Rails screencasts at TutsPlus.com
- RailsCasts
- CodeSchool (includes Rails for zombies).
- Learn Rails the Zombie Way
- CodeAcademy
- confreaks.com — expert recording services for conferences, seminars, and workshops.
- Learnable — video courses and books ($30 per month).
- TryRuby — online Ruby console and 15 minute interactive Ruby tutorial.
- Project Euler — a huge amount of programming problems to learn any language.
- PuzzleNode — a site for coders who enjoy to work on challenging problems, and is inspired by similar efforts such as Project Euler and the Internet Problem Solving Contest.
- Ruby on Rails Guides — These guides are designed to make you immediately productive with Rails, and to help you understand how all of the pieces fit together.
- Ruby Koans — will walk you along the path to enlightenment in order to learn Ruby. The goal is to learn the Ruby language, syntax, structure, and some common functions and libraries. We also teach you culture. Testing is not just something we pay lip service to, but something we live. It is essential in your quest to learn and do great things in the language.
- RubyMonk — free, interactive tutorials to help you discover Ruby idioms, in your browser!
- SitePoint — articles on Ruby programming.
- Better Specs — RSpec best practices.
- A community-driven Ruby coding style guide
- A community-driven Rails 3 & 4 style guide
- GitHub Ruby Coding Style
- See also: RuboCop — a Ruby static code analyzer, based on the community Ruby style guide.
IDEs and text editors
- StackOverflow: What Ruby IDE do you prefer?
- ★ Sublime Text — one of the best text editors for coding. Here are some essential add-ons:
- Package Control — Sublime Text package manager that makes it exceedingly simple to find, install and keep packages up-to-date.
- Soda Theme — dark and light custom UI themes for Sublime Text.
- RSpec plugin
- ApplySyntax — a plugin for Sublime Text 2 and 3 that allows you to detect and apply the syntax of files that might not otherwise be detected properly. For example, files with the .rb extension are usually Ruby files, but when they are found in a Rails project, they could be RSpec spec files, Cucumber step files, Ruby on Rails files (controllers, models, etc), or just plain Ruby files. This is actually the problem I was trying to solve when I started working on this plugin.
- BeautifyRuby — beautifies Ruby code.
- Sublime Ruby Debugger — a debugger plugin for interactive ruby and RoR debugging on Sublime Text.
- All Autocomplete — extends the default autocomplete to find matches in all open files.
- ChangeQuotes — converts single to double or double to single quotes. Attempts to preserve correct escaping, though this could be improved I'm sure.
- CoffeeScript — syntax highlighting and checking, commands, shortcuts, snippets, compilation and more.
- SideBarEnhancements — provides enhancements to the operations on Sidebar of Files and Folders.
- BracketHighlighter — bracket and tag highlighter for Sublime Text.
- RubyMine — intelligent Ruby and Rails IDE.
- Atom - a brand-new hackable text editor from Github.
Environment management
- ★ rbenv — a tool to to pick a Ruby version for your application and guarantee that your development environment matches production. Put rbenv to work with Bundler for painless Ruby upgrades and bulletproof deployments.
- RVM — a command-line tool which allows you to easily install, manage, and work with multiple ruby environments from interpreters to sets of gems.
Ruby distributions
- RubyInstaller — a self-contained Windows-based installer that includes the Ruby language, an execution environment, important documentation, and more.
- RubyStack — a complete development environment for Ruby on Rails that can be deployed in one click. It includes the latest stable release of Ruby, RVM, Rails, Apache, NGinx, MySQL, SQLite, Git and Subversion, Memcache and Varnish, Sphinx, PHP and phpMyAdmin.
Documentation
- Dash — an API Documentation Browser and Code Snippet Manager. Dash stores snippets of code and instantly searches offline documentation sets for 150+ APIs, including Ruby core libraries, and Ruby on Rails.
- Zeal – Dash alternative for Linux & Windows.
Application and Web Servers
- Unicorn – Rack HTTP server for fast clients and Unix.
- Phusion Passenger — a fast and robust web server and application server for Ruby, Python and Node.js.
- Thin – A very fast & simple Ruby web server.
- puma A ruby web server built for concurrency
- Pow! — a zero-config Rack server for Mac OS X.
Other tools
- Pry — an IRB alternative and runtime developer console.
- Reek — code smell detection for Ruby.
- Foreman — manage Procfile-based applications.
- Rubular — a Ruby-based regular expression editor. It's a handy way to test regular expressions as you write them.
- httpie — extremely handy command line HTTP client, a user-friendly cURL replacement.
- ngrok — introspected tunnels to localhost. ngrok creates a tunnel from the public internet (http://subdomain.ngrok.com) to a port on your local machine. You can give this URL to anyone to allow them to try out a web site you're developing without doing any deployment.
- codequizzes.com — learn programming by doing, not by reading.
- codewars.com — achieve mastery through challenge.
- Smarterer.com — crowdsourced tests for Ruby, Rails, and a lot of other technologies.
- oDesk — a global freelance platform that includes qualification testing for programming languages and frameworkks.
- Ruby on Rails — an open source full-stack framework web application framework.
- Sinatra — a DSL for quickly creating web applications in Ruby with minimal effort.
- Padrino — a Ruby framework built upon the Sinatra web library, created to make it fun and easy to code more advanced web applications while still adhering to the spirit that makes Sinatra great!
- RABL — a Rails and Padrino ruby templating system for generating JSON, XML, MessagePack, PList and BSON.
- Grape — an opinionated micro-framework for creating REST-like APIs in Ruby.
- Pliny – write excellent APIs in Ruby.
- Simple Form — forms made easy for Rails! It's tied to a simple DSL, with no opinion on markup.
- ResqueMailer — Rails plugin for sending asynchronous email with ActionMailer and Resque.
- Paperclip — easy file attachment management for ActiveRecord.
- Peek — status bar with debug information for Rails apps.
- 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, Closure Compiler, and UglifyJS compatibility, ahead-of-time gzipping, built-in JavaScript template support, and optional Data-URI / MHTML image and font embedding.
- Thinking Sphinx — a library for connecting ActiveRecord to the Sphinx full-text search tool, and integrates closely with Rails (but also works with other Ruby web frameworks), http://pat.github.com/thinking-sphinx.
- CarrierWave — classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks.
- Kaminari — a Scope & Engine based, clean, powerful, customizable and sophisticated paginator for modern web app frameworks and ORMs.
- dotenv — loads environment variables from .env file into ENV in development.
- Devise — flexible authentication solution for Rails with Warden.
- OmniAuth — a flexible authentication system utilizing Rack middleware.
- CanCanCan — a continuation of the dead. CanCan project. Our mission is to keep CanCan alive and moving forward, with maintenance fixes and new features.
- Authlogic — a clean, simple, and unobtrusive ruby authentication solution.
- Pundit — minimal authorization through OO design and pure Ruby classes.
- Delayed::Job — database backed asynchronous priority queue.
- Resque — a Redis-backed Ruby library for creating background jobs, placing them on multiple queues, and processing them later.
- Sidekiq — a full-featured background processing framework for Ruby. It aims to be simple to integrate with any modern Rails application and much higher performance than other existing solutions.
- Qu A Ruby library for queuing and processing background jobs.
- que A Ruby job queue that uses PostgreSQL's advisory locks for speed and reliability
- Brakeman — a static analysis security vulnerability scanner for Ruby on Rails applications.
- Codesake::Dawn - Codesake::Dawn is a security source code scanner for ruby powered code. It is especially designed for web applications, but it works also with general purpose ruby scripts. Codesake::Dawn supports all major MVC frameworks like ruby on rails, padrino and sinatra; it provides more than 170 security checks with their own mitigation suggestion.
- RMagick — an interface to the ImageMagick and GraphicsMagick image processing libraries.
- MiniMagick — a ruby wrapper for ImageMagick or GraphicsMagick command line.
- psd.rb Parse Photoshop files in Ruby with ease
HTML, XML
- Nokogiri — an HTML, XML, SAX, and Reader parser. Among Nokogiri’s many features is the ability to search documents via XPath or CSS3 selectors.
CSS
- SASS — an extension of CSS3, 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.
- LESS — Leaner CSS, in your browser or Ruby.
Markdown
- kramdown — kramdown is yet-another-markdown-parser but fast, pure Ruby, using a strict syntax definition and supporting several common extensions, http://kramdown.gettalong.org
- redcarpet — a fast, safe and extensible Markdown to (X)HTML parser.
- maruku — a pure-Ruby Markdown-superset interpreter.
- markup — the code GitHub uses to render
README.your_favorite_markup
. - StackOverflow: Better ruby markdown interpreter?
- Mustache — logic-less Ruby templates. A framework-agnostic way to render logic-free views.
- HAML — a very compact markup language, based on one primary principle: markup should be beautiful. It’s not just beauty for beauty’s sake either; Haml accelerates and simplifies template creation down to veritable haiku.
- Slim – a templating lang that reduce the syntax to the essential parts without becoming cryptic.
- RSpec — RSpec meta-gem that depends on the other components.
- rspec-rails — Rails integration for RSpec.
- Cocumber — a tool for running automated tests written in plain language.
- shoulda
- factory_girl — a fixtures replacement with a straightforward definition syntax, support for multiple build strategies (saved instances, unsaved instances, attribute hashes, and stubbed objects), and support for multiple factories for the same class, including factory inheritance.
- factory_girl_rails — Rails integration for
factory_girl
. - Capybara — a tool helping you test web applications by simulating how a real user would interact with your app. It is agnostic about the driver running your tests and comes with Rack::Test and Selenium support built in. WebKit is supported through an external gem.
- capybara-webkit A Capybara driver for headless WebKit so you can test Javascript web apps.
- Mocha — a Ruby library for mocking and stubbing.
- Spring — Rails application preloader to speeds up development by keeping your application running in the background so you don't need to boot it every time you run a test, rake task or migration.
- Faker — a library for generating fake data such as names, addresses, and phone numbers.
- Timecop — a gem providing "time travel", "time freezing", and "time acceleration" capabilities, making it simple to test time-dependent code. It provides a unified method to mock Time.now, Date.today, and DateTime.now in a single call.
- Capistrano — remote multi-server automation tool.
- Chef — a systems integration framework, built to bring the benefits of configuration management to your entire infrastructure.
- Mina – really fast deployer and server automation tool.
- Prawn — fast, nimble PDF generation.
- Dalli — high performance memcached client for Ruby.
- Active Merchant — Active Merchant is an extraction from the ecommerce system Shopify. Shopify's requirements for a simple and unified API to access dozens of different payment gateways with very different internal APIs was the chief principle in designing the library.
- EventMachine — fast, simple event-processing library for Ruby.
- scss-lint Configurable tool for writing clean and consistent SCSS
- rpush The push notification service for Ruby
- eye Process monitoring tool