Skip to content

Latest commit

 

History

History
518 lines (385 loc) · 46.4 KB

README.md

File metadata and controls

518 lines (385 loc) · 46.4 KB

Ruby Bookmarks Awesome

This is a curated collection of essential Ruby and Ruby on Rails resources. The project aims to maintain a well-structured reference equally useful both for beginners and advanced web developers.

★ stands here for Editors' Choice.

This list is not intended to include any random resource related to Ruby programming (we already have a most complete gem catalogue at ruby-toolbox.com), but only the best and most actual alternatives in each area. You will find here latest editions of the most important books, time and community tested gems (alive projects only!), and actively updated websites. Sharing and pull requests are very much appreciated!

Fork and edit

PS: Check out awesome-awesomeness for other community-driven bookmark collections.

Books

For beginners and intermediate level developers

Advancing Ruby knowledge

Ruby on Rails for beginners

Ruby on Rails, advanced level

Testing

Other frameworks and tools

Blogs

Screencasts and courses

Other Learning Materials

  • 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.
  • Sourcegraph — search engine for code examples/ Here is a demo video.
  • Basic Algorithms written in Ruby.
  • Jumpstart Lab — a list of beginner and advanced-level Ruby, Rails, and Sinatra project tutorials. Includes challenging independent projects as well.
  • RubyOffRails — An online Ruby course recently open sourced.
  • The Odin Project — an online Ruby lesson plan with a community to help.

Style Guides

See also:

Podcasts

Tools

IDEs and text editors

Code quality analysis

  • RuboCop — a Ruby static code analyzer, based on the community Ruby style guide.
  • Guard plugin for RuboCop — allows you to automatically check Ruby code style with RuboCop when files are modified.
  • RubyCritic — a gem that wraps around static analysis gems such as Reek, Flay and Flog to provide a quality report of your Ruby code.

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.
  • rbenv-vars — an rbenv plugin that safely sets global and per-project environment variables.
  • RVM — a command-line tool which allows you to easily install, manage, and work with multiple ruby environments from interpreters to sets of gems.
  • chruby — a tool that changes the current Ruby.

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.
  • DevDocs — multiple API documentations in a fast, organized, and searchable interface (web).
  • OmniRef — comprehensive ruby documentation search (web).

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.
    • Powder — user-friendly CLI wraper for Pow.
    • Powify — a management tool for Pow by 37 signals. It allows you to easily install, update, and manage pow and pow applications seamlessly.
  • Prax — a pure ruby alternative to Pow! that runs on GNU/Linux.
  • TorqueBox — an application platform that supports popular technologies such as Ruby on Rails and Sinatra, while extending the footprint of Ruby applications to include built-in support for services such as messaging, scheduling, caching, and daemons. TorqueBox provides an all-in-one environment, built upon the latest JBoss AS Java application server and JRuby. Functionality such as clustering, load-balancing and high-availability is included right out-of-the-box.

See also:

  • The Ruby Web Benchmark Report (July 2014) — „I benchmarked every single version of Ruby available as of the beginning of this test — January 2014. On each version I benchmarked every Rack server and web framework combination I could find. I tested with both Apache Bench and wrk to see if there are flaws that one benchmarking tool picks up on that the other didn’t. The goal of the benchmark is the fastest benchmark run, not the average.“
  • App Server Arena — a comparison of popular ruby application servers.

Deployment Automation and Configuration Management

  • 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.
  • Rails + Nginx + Unicorn Dockerfile — easy useable docker for rails. less configuration, affordable production.

Other tools

  • Pry — a powerful alternative to the standard IRB shell for Ruby. It features syntax highlighting, a flexible plugin architecture, runtime invocation and source and documentation browsing.
  • 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.
  • eye — a process monitor.
  • god - the Ruby Framework for Process Management

Quizzes, tests, exams

  • 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.

Hosting

VPS

  • DigitalOcean — fast VPS hosting. Among other features they provide one-click Rails installation that uses Nginx with Unicorn on Ubuntu.

PAAS

  • Heroku — cloud computing designed and built for developers. More details on Ruby support.
  • NineFold — Rails-friendly hosting with a generous free tier (1.5 GB RAM, 1 CPU, 25 GB for DataBase server in the US region). Credit card required even if you fit the free tier.
  • OpenShift — Red Hat's Platform-as-a-Service that allows developers to quickly develop, host, and scale applications in a cloud environment. Capable for Rails apps git-push deployment. There also a free tier (no credit card required).
  • AppFog — another developer-friendly cloud service.

Some materials on Rails deployment

Gems

ActiveRecord

  • Annotate — Add a comment summarizing the current schema to the top or bottom of each of your ActiveRecord models, fixtures, tests and specs, factory_girl factories, routes.rb file, etc.
  • Paperclip — easy file attachment management for ActiveRecord.
  • 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).
  • Ancestry — organise ActiveRecord model into a tree structure.
  • Squeel — lets you write your Active Record queries with fewer strings, and more Ruby, by making the Arel awesomeness that lies beneath Active Record more accessible.

API

  • 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.

Authentication

  • Devise — flexible authentication solution for Rails with Warden.
  • OmniAuth — a flexible authentication system utilizing Rack middleware.
  • Authlogic — a clean, simple, and unobtrusive ruby authentication solution.
  • sorcery — magical Authentication for Rails 3 and 4, with OAuth support. Supports ActiveRecord, DataMapper, Mongoid and MongoMapper.

Authorization

  • CanCanCan — a continuation of the dead. CanCan project. Our mission is to keep CanCan alive and moving forward, with maintenance fixes and new features.
  • Pundit — minimal authorization through OO design and pure Ruby classes.

Avatars

  • avatarly — a simple gem for creating gmail-like user avatars based on user email or any other string passed.

Background Jobs

  • Backburner — a beanstalkd-powered job queue that can handle a very high volume of jobs.
  • Stalker — a minimalist queuing DSL for Beanstalk.
  • Delayed::Job — database backed asynchronous priority queue.
  • Minion — simple job queue based on AMQP gem and Bunny.
  • 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.
  • 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.
  • Sucker Punch — an asynchronous processing library using Celluloid, heavily influenced by Sidekiq and girl_friday.
  • Ost — a lightweight Redis based queues and workers.
  • Ohm — object-hash mapping for Redis.

Bootstrap

CLI

  • colorize — String class extension. It add some methods to set color, background color and text effect on console easier using ANSI escape sequences.
  • TTY — a toolbox for developing beautiful command line clients in Ruby.

CSS

  • LESS — leaner CSS, in your browser or Ruby.
  • Bourbon — alightweight mixin library for Sass.
  • 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.
  • Bitters — add a dash of pre-defined style to your Bourbon.
  • Autoprefixer — a tool to parse CSS and add vendor prefixes to CSS rules using values from the Can I Use. This gem provides Ruby and Ruby on Rails integration with this JavaScript tool.

Configuration and environment variables

  • dotenv — loads environment variables from .env file into ENV in development.
  • Figaro — simple, Heroku-friendly Rails app configuration using ENV and a single YAML file.

Debugging

  • Byebug — a simple to use, feature rich debugger for Ruby 2. It uses the new TracePoint API for execution control and the new Debug Inspector API for call stack navigation, so it doesn't depend on internal core sources. It's developed as a C extension, so it's fast. And it has a full test suite so it's reliable.

E-commerce

  • FastSpring — subscription API for Rails.
  • Active Merchant — a simple and unified API to access dozens of different payment gateways with very different internal APIs.
  • PayPal — this SDK provides Ruby APIs to create, process and manage payment.
  • Shoppe — e-commerce platform for Ruby on Rails.

Graphics

  • 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.

Logging

  • MonoLogger — a lock-free logger for Ruby 2.0.
  • Yell — Your Extensible Logging Library, a comprehensive logging replacement for Ruby.
  • Fluentd — an open source data collector designed for processing data streams, which instantly enables you to have Log Management, Big Data Analytics, etc.
  • mongodb_logger — an alternative logger for Rails or Rack based app, which log all requests of you application into MongoDB database (allow to store and search any information from logs; web panel allow filter logs, build graphs using MapReduce by information from logs).
  • Hatchet — logging library that provides the ability to add class/module specific filters.
  • Whoops — a free, self-hosted tool for logging application events like errors or background worker completion (uses Rails for web frontend and MongoDB).
  • logstasher Awesome rails logs

Mail

  • Pony — the express way to send email in Ruby.
  • Mailgun-Ruby — Mailgun's Official Ruby Library.
  • AWS::SES — easy ruby DSL & interface to Amazon SES. See also the official Ruby SDK.
  • Mail — a library that is designed to handle emails generation, parsing and sending in a simple, rubyesque manner.

Markdown

  • kramdown — 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.

See also:

Message Queuing

  • AMQP — EventMachine-based RabbitMQ client.
  • Bunny — RabbitMQ Ruby client based on AMQP gem.
  • rbzmq — Ruby binding for ZeroMQ.
  • ffi-rzmq — FFI bindings for ZeroMQ so the library can be used under JRuby and other FFI-compliant ruby runtimes.

Misc

If there is a nice gem, but it is difficult to classify it with existing bookmarks groups, or it is still one of his kind, put it here.

  • Prawn — fast, nimble PDF generation.
  • Dalli — high performance Memcached client for Ruby.
  • EventMachine — fast, simple event-processing library.
  • rpush — push notification service, supporting Apple Push Notification Service, Google Cloud Messaging, Amazon Device Messaging, Windows Phone Push Notification Service.
  • Rubyzip — reading and writing zip files.
  • JsonCompare — returns the difference between two JSON files.
  • MicroMachine — minimal Finite State Machine.
  • Dante — turn any ruby code into a daemon.
  • Memoist — an extraction of ActiveSupport::Memoizable with few extensions.
  • Awesome Print — a Ruby library that pretty prints Ruby objects in full color exposing their internal structure with proper indentation. Rails ActiveRecord objects and usage within Rails templates are supported via included mixins.
  • twig Your personal Git branch assistant
  • datashift Comprehensive Excel and CSV import/export tools for Ruby
  • Configurations — provides a unified approach to do configurations for gems or other ruby code.
  • awesome_print — a Ruby library that pretty prints Ruby objects in full color exposing their internal structure with proper indentation. Rails ActiveRecord objects and usage within Rails templates are supported via included mixins.
  • YYMMDD — tiny DSL for idiomatic date parsing and formatting.
  • Libnotify — Ruby bindings for libnotify, a crossplatform user notification library.
  • MemFs — provides a fake file system that can be used for tests.
  • Github-Changelog-Generator — automatically generate change log from your tags, issues, labels and pull requests.

Multithreading

  • thread — extensions to the thread library (includes thread pool).
  • Sprawling — spawn gem for Rails to easily fork or thread long-running code blocks.
  • Parallel — Run any code in parallel Processes(> use all CPUs) or Threads(> speedup blocking operations). Best suited for map-reduce or e.g. parallel downloads/uploads.

Profiling and Performance

  • ruby-prof — a code profiler for MRI rubies.
  • 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.
  • timecop-console — expose Timecop's capabilities to the UI in your rails app, allowing QA to take advantage of it.
  • stackprof — a sampling call-stack profiler for ruby 2.1+.
  • stackprof-webnav — web UI for viewing stackprof dumps.
  • rblineprof — line-profiler.
  • Peek — status bar showing performance info for Rails apps.
  • Peek::Rblineprof — peek into how much each line of your Rails application takes throughout a request.
  • Bullet — a gem to help to increase application's performance by reducing the number of queries it makes. It will watch your queries while you develop your application and notify you when you should add eager loading (N+1 queries), when you're using eager loading that isn't necessary and when you should use counter cache.
  • rack-mini-profiler — middleware that displays speed badge for every html page. Designed to work both in production and in development.

Rack

  • Rack::Timeout — abort requests that are taking too long.
  • Rack::Protection — protects against typical web attacks. Should work for all Rack apps, including Rails.
  • Rack::LiveReload — Bring in livereload.js into handy Rack middleware. No need for browser extensions anymore! Just plug it in your middleware stack and go! Even supports browsers without WebSockets!
  • rack-mini-profiler — middleware that displays speed badge for every html page. Designed to work both in production and in development.
  • Coverband — Rack middleware to help measure production code coverage.

Rails

  • 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.
  • 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.
  • CarrierWave — classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks.
  • Kaminari — clean, powerful, customizable and sophisticated paginator for modern web app frameworks and ORMs.
  • suspenders — a Rails template with Thoughtbot standard defaults, ready to deploy to Heroku.
  • High Voltage — easily include static pages in your Rails app.
  • Squasher — compresses old migrations in a Rails application. If you work on a big project with lots of migrations, every rake db:migrate might take a few seconds, or creating of a new database might take a few minutes. That's because Rails loads all those migration files. Squasher removes all the migrations and creates a single migration with the final database state of the specified date (a new migration will look like a schema).
  • Metamagic — a simple Ruby on Rails plugin for creating meta tags. It supports regular meta tags, OpenGraph (Facebook), Twitter Cards, and custom tags.
  • Better Errors — replaces the standard Rails error page with a much better and more useful error page. It is also usable outside of Rails in any Rack app as Rack middleware.
  • Quiet Assets — turns off the Rails asset pipeline log.
  • RailsAdmin — a Rails engine that provides an easy-to-use interface for managing your data.
  • paper_trail — track changes to your models' data. Good for auditing or versioning.
  • font-awesome-rails — the Font Awesome font bundled as an asset for the rails asset pipeline.
  • gemoji — emoji images and names.
  • rails_emoji — one more emoji gem for Ruby on Rails.
  • Royce — a Ruby on Rails roles solution.
  • YamlDb — a database-independent format for dumping and restoring data. It complements the the database-independent schema format found in db/schema.rb. The data is saved into db/data.yml.
  • formtastic — a Rails form builder plugin with semantically rich and accessible markup.
  • rails_param — parameter Validation & Type Coercion.
  • RailsFriendlyURLs - Rails gem to configure absolutely any url within your project into a SEO-Friendly one.

Validation:

Scheduling

(info collected from Stack Overflow)

  • rufus-scheduler — an in-process, in-memory scheduler with no persistence, accepting at, in, cron and every jobs.
  • sidekiq-cron — scheduler based on rufus-scheduler and Sidekiq (Redis based message queue) for persistence. Inherits web UI from Sidekiq.
  • sidekiq-scheduler — one more job scheduler based on rufus-scheduler and Sidekiq.
  • resque-scheduler — rufus-scheduler + Resque.
  • Clockwork — a cron replacement. It runs as a lightweight, long-running Ruby process which sits alongside your web processes (Mongrel/Thin) and your worker processes (DJ/Resque/Minion/Stalker) to schedule recurring work at particular times or dates. Here is a blog post with more details.
  • Whenever — a Ruby wrapper for crond, with a clear syntax (each job is a separate process).

SDKs and API Wrapers

  • AWS SDK — Amazon Web Services API for Ruby.
  • Dropbox Core API for Ruby.
  • Fog — cloud services library, top to bottom: collections provide a simplified interface, making clouds easier to work with and switch between; requests allow power users to get the most out of the features of each individual cloud; mocks make testing and integrating a breeze.
  • Yt — YouTube API Ruby client.

Search

  • Ransack — enables the creation of both simple and advanced search forms against your application's models.

Security

  • 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.

Serialization

Text:

  • JSON — includes pure Ruby and C implementation for JSON.
  • JSON::Stream — a streaming JSON parser that generates SAX-like events.
  • YAJL — a streaming JSON parsing and encoding library for Ruby (C bindings to YAJL).
  • OJ — Optimized JSON, as the name implies, was written to provide speed optimized JSON handling. So far it has achieved that, and is about 2 times faster than any other Ruby JSON parser, and 3 or more times faster at serializing JSON.
  • TOML — a sane configuration format from @mojombo.

Binary:

  • BSON — Ruby implementation of the BSON Specification (2.0.0+), http://bsonspec.org
  • MessagePack — an efficient binary serialization format. It lets you exchange data among multiple languages like JSON but it's faster and smaller. For example, small integers (like flags or error code) are encoded into a single byte, and typical short strings only require an extra byte in addition to the strings themselves. See http://msgpack.org
  • Protobuf — Ruby implementation for Protocol Buffers.

Syntax Highlighters

  • Rouge — a pure-ruby code highlighter that is compatible with pygments.
  • pygments.rb — a Ruby wrapper for the Python pygments syntax highlighter.

Template engines

  • Mustache — logic-less Ruby templates. A framework-agnostic way to render logic-free views.
  • HAML — a very compact markup language, that accelerates and simplifies template creation down to veritable haiku.
  • Slim – a templating language that reduce the syntax to the essential parts without becoming cryptic.
  • Tilt — generic interface to multiple Ruby template engines.

Testing

  • RSpec — RSpec meta-gem that depends on the other components.
  • rspec-rails — Rails integration for RSpec.
  • RSpec::Expectations — a simple, readable API to express expected outcomes of a code example.
  • Cucumber — 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.
  • Formulaic — simplify form filling with Capybara.
  • 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.

Web Frameworks

  • 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!
  • Cuba — a microframework for web development originally inspired by Rum, a tiny but powerful mapper for Rack applications. It integrates many templates via Tilt, and testing via Cutest and Capybara.
  • Lotus — a complete MVC web framework.
  • Roda — a new ruby web framework, allowing for fast and DRY code using a routing tree. Find out why you should use it.

See also:

  • Benchmark results for different Ruby, web framework and app server combinations (actual on July 2014).