Awesome Rails
Table of Contents
Use the "Table on Contents" menu on the top-left corner to explore the list.
Resources
Official Resources
- Rails Official Website
- Rails Official Guide
- Rails Official Guide (Edge Guide)
- Rails API Documentation
- Rails Source Code
- Rails Official Blog
External Resources
Books
- Ruby on Rails Tutorial Book
- Agile Web Development with Rails 6
- Docker for Rails Developers
- Rails 5 Test Prescriptions
- Rails, Angular, Postgres, and Bootstrap, Second Edition
- Growing Rails Applications in Practice
- Crafting Rails 4 Applications
- The Rails 6 Way
Video tutorials
- RailsCasts *(inactive since 2013)
- GoRails *(freemium)
- Drifting Ruby *(freemium)
Youtube channels
Other external resources
Jobs
- Stack Overflow
- railsjobs on Reddit
- rails jobs on indeed.com
- rails jobs on glassdoor.com
- rails jobs on gorails.com
- rails jobs on remoteok.io
- rails jobs on weworkremotely.com
Tip: You can find list of remote job boards including Rails jobs on awesome-remote-job
Community
Articles
from dev.to:
- More than "Hello World" in Docker: Build Rails + Sidekiq web apps in Docker
- Design Patterns with Ruby on Rails part 1: Introduction and Policy Object - Part 2
- The Progressive Rails App
- Modern Rails flash messages (part 1): ViewComponent, Stimulus & Tailwind CSS - Part 2
- Building a Rails App With Multiple Subdomains
- Reactive Rails applications with StimulusReflex
- 1 Backend, 5 Frontends - Todo List with Rails, React, Angular, Vue, Svelte, and jQuery
- Create a Video Party App With Rails Part 1: Building the Backend - Part 2
- The Rails Model Introduction I Wish I Had
- How to create a gem in Ruby on Rails? -From Scratch-
- Multiple Foreign Keys for the Same Relationship in Rails 6
- QR Code Reader on Rails
- Magic Links with Ruby On Rails and Devise
- I created the same application with Rails and no JavaScript
- Instantly speed up your Rails application by self-hosting your fonts
- Reactive Map with Rails, Stimulus Reflex and Mapbox
- A Future for Rails: StimulusReflex
- Introduction to Ruby on Rails Patterns and Anti-patterns Part 1 - Part 2
- Rails Concerns: To Concern Or Not To Concern
- Building an Event Sourcing System in Rails, Part 1: What is Event Sourcing? - Part 2
- Real Time Notification System with Sidekiq, Redis and Devise in Rails 6
- Deploying Your Rails 6 App
- What's Cooking in Rails 7?
- Using Hotwire Turbo in Rails with legacy JavaScript
- From Rails scaffold listing to Hotwire infinite scroll
- Building a Component Library in Rails With Storybook
- How to Speed Up Load Times In A Rails App - What I Wish I Knew Four Months Ago
- Endless Scroll / Infinite Loading with Turbo Streams & Stimulus
from shopify.engineering:
- How to Write Fast Code in Ruby on Rails
- How to Introduce Composite Primary Keys in Rails
- Enforcing Modularity in Rails Apps with Packwerk
from blog.planetargon.com:
- 8 Useful Ruby on Rails Gems We Couldn't Live Without
- Ruby on Rails Code Audits: 8 Steps to Review Your App
- Rails 6.1 is Out! How to Prepare Your App Now
- When Should You Upgrade Your Rails Application?
- Helpful Resources for Upgrading Your Rails App Version
- Upgrading Rails: Interview with Eileen Uchitelle
from blog.arkency.com:
- nil?, empty?, blank? in Ruby on Rails - what's the difference actually?
- How well Rails developers actually test their apps
- Rails multitenancy story in 11 snippets of code
- Painless Rails upgrades
- Comparison of approaches to multitenancy in Rails apps
- Managing Rails Event Store Subscriptions — How To
- Rails connections, pools and handlers
- How to balance the public APIs of an open-source library — practical examples from RailsEventStore
- Rack apps mounted in Rails — how to protect access to them?
from scotch.io:
- File Upload in Rails with PaperClip
- Build a Blog with Ruby on Rails - Part 2
- Uploading Files With Rails and ActionCable
- Create an Online Streaming Radio With Rails and Icecast
- Integrating Social Login in a Ruby on Rails Application
- Asynchronous Chat With Rails and ActionCable
from sitepoint.com:
- 10 Ruby on Rails Best Practices
- Building APIs with Ruby on Rails and GraphQL
- Understanding the Model-View-Controller (MVC) Architecture in Rails
- Beyond Rails Abstractions: A Dive into Database Internals
- Search and Autocomplete in Rails Apps
- Start Your SEO Right with Sitemaps on Rails
- Handle Password and Email Changes in Your Rails API
- Master Many-to-Many Associations with ActiveRecord
- Common Rails Security Pitfalls and Their Solutions
from pganalyze.com:
- Efficient GraphQL queries in Ruby on Rails & Postgres
- Similarity in Postgres and Rails using Trigrams
- Effectively Using Materialized Views in Ruby on Rails
- Full Text Search in Milliseconds with Rails and PostgreSQL
- Advanced Active Record: Using Subqueries in Rails
- PostGIS vs. Geocoder in Rails
- Creating Custom Postgres Data Types in Rails
from semaphoreci.com:
- Integration Testing Ruby on Rails with Minitest and Capybara
- Mocking in Ruby with Minitest
- How to Test Rails Models with RSpec
- Dockerizing a Ruby on Rails Application
from evilmartians.com:
- Dockerizing Ruby and Rails development
- How to GraphQL with Ruby, Rails, Active Record, and no N+1
- Keep up with the Tines: Rails frontend revamp
- Pulling the trigger: How to update counter caches in your Rails app without Active Record callbacks
- GraphQL on Rails: On the way to perfection
- Danger on Rails: make robots do some code review for you!
- GraphQL on Rails: From zero to the first query
- A fixture-based approach to interface testing in Rails
from digitalocean.com
from not yet classified sources:
- Protecting your users data from Rails application using cryptography
- The 3 Tenets of Service Objects in Ruby on Rails
- Famous Web Apps Built with Ruby on Rails
- Building a JSON API with Rails 5
- Five Practices for Robust Ruby on Rails Applications
- Crafting APIs With Rails
- Working with the SQL ‘time’ type in Ruby on Rails
- Upgrading Rails apps with dual boot
- What Are Rails Parameters & How to Use Them Correctly
- How to Remove Single Table Inheritance from Your Rails Monolith
- Build a Rails application with VueJS using JSX
- Fetching millions of rows from PostgreSQL with Rails
- Implementing Multi-Table Full Text Search with Postgres in Rails
- Ruby on Rails ActiveRecord PostgreSQL Data Integrity and Validations
- Programming Community Curated Resources For Learning Ruby on Rails
- Choosing ruby on rails for your next web development project (business guide)
- Dockerizing a Rails application
- How to painlessly set up your Ruby on Rails dev environment with Docker
- How I used Docker with Rails
- Rails 6 Features: What's New and Why It Matters
- Ruby on Rails configuration tutorials
- Containerizing Ruby on Rails Applications
- Behind The Scenes: Rails UJS
Open Source Rails Apps
Note: Rails versions of these apps are valid as the date of latest commit. They are defined in their Gemfile and/or Gemfile.lock and they might be outdated. If you find it outdated, don't forget to notfiy us by opening a pull request.
- activeWorkflow - An intelligent process and workflow automation platform based on software agents (using Rails 5.2).
- adopt-a-hydrant - A civic infrastructure detection app (using Rails 4.2).
- airCasting - A platform for recording, mapping, and sharing health and environmental data using your smartphone (using Rails 5.2). -
- alaveteli - A platform for making public freedom of information requests - using Rails 5.1 -
- alonetone - A music hosting, management & distribution app (using Rails 6.0). -
- api.rss - A RSS feed conversion (to API) app (using Rails 5.2).
- asakusaSatellite - A realtime chat application for developers (using Rails 6.0). -
- askaway - Question & answer app specialized in politics (using Rails 4.1).
- autolab - A course management app (using Rails 4.2). -
- beatstream - A music streaming app - using Rails 3.2
- bike_index - A bike registry tracking app (using Rails 4.2). -
- blackCandy - A music streaming app (using Rails 6.0).
- brimir - An email helpdesk app (using Rails 5.2). (archived).
- calagator - A community calendaring app (using Rails 4.2).
- campo - A forum app (using Rails 4.2). -
- canvas-lms - A learning management app (using Rails 5.2).
- catarse - A crowdfunding platform for creative projects (using Rails 4.2). -
- chatwoot - A simple and elegant live chat software (using Rails 6.0).
- ciao - A URL status checking app (using Rails 6.0).
- coRM - A customer relationship management app - using Rails 3.2 -
- coderwall (legacy) - A social network app for software engineers - using Rails 3.2
- coderwall (next) - A social network app for software engineers - using Rails 5.0
- codetriage - An open source project finder app (using Rails 6.0). -
- commudle - A community management app (using Rails 5.2).
- contribulator - An open source project finder app - using Rails 5.1
- coursemology2 - Learning platform app (using Rails 5.2).
- covoiturage-libre - A carpooling app - using Rails 5.0 (archived).
- crabgrass-core - A collaboration platform for activist groups (using Rails 4.2).
- crowdAI - An app for data science challenges (using Rails 5.2). -
- crowdtiltOpen - A crowdfunding platform - using Rails 3.2
- cw-ovp - video packaging to *.m3u8 for HLS (HTTP Live Streaming) with FFMPEG on website (using Rails 6.0).
- danbooru - A taggable image board app (using Rails 6.0).
- dcaf_case_management - A case management app (using Rails 5.2).
- dgidb - A drug gene interaction platform - using Rails 5.1
- diaper - An inventory management app for diaper banks (using Rails 6.0). -
- diaspora - A social networking app - using Rails 5.1 -
- discourse - A platform for community discussion (using Rails 6.0). -
- ekylibre - A farm management app (using Rails 4.2).
- postal - A mail delivery platform (using Rails 5.2).
- encrypt.to - A messaging app with encryption support (using Rails 4.2).
- eol - An encyclopedia app - using Rails 3.2 -
- expertiza - A learning material sharing app (using Rails 4.2).
- FAE - A modern CMS deveveloped by FINE (using Rails 5.2)
- fairmondo - A marketplace app (using Rails 4.2). -
- fat-free-crm - An open source, Ruby on Rails customer relationship management platform (CRM) (using Rails 5.2). -
- feedbin - A RSS reader app (using Rails 6.0). -
- follow-all - A Twitter account management app (using Rails 4.2). (archived).
- forem - Social platform app specialized for web development (using Rails 5.2). -
- fromthepage - A wiki-like app for crowdsourcing transcription of handwritten documents (using Rails 4.1). -
- gitlabhq - A code collaboration app (using Rails 6.0).
- graff_mags - A graffiti magazine sharing app (using Rails 4.1). -
- growstuff - A data management app for food gardeners (using Rails 5.2). -
- hackershare - Social bookmarks website for hackers (using Rails 6.0). -
- hashrobot - A social media management app (using Rails 4.2). -
- helpy - A customer support app (using Rails 4.2). -
- hitobito - An event organization app (using Rails 4.2). -
- hours - A time tracking app (using Rails 4.2). -
- inaturalist - A community app for nature and related stuff (using Rails 4.2). -
- intercityup.com - A control panel app for app deployment (using Rails 4.1).
- kanban - A Trello clone (using Rails 4.2).
- kitsu-tools - An anime discovery platform (using Rails 4.1).
- lavish - A color scheme generator (using Rails 4.2).
- lifeToRemind - A career planning app (using Rails 5.2).
- lobsters - A link aggregation app (using Rails 5.2). -
- loomio - A collaborative decision-making app (using Rails 5.2). -
- mastodon - A microblogging app (using Rails 5.2). -
- obtvse2 - A blogging app (using Rails 4.0).
- onebody - A social networking app for churches - using Rails 5.1
- openFarm - A database for information about farming and gardening (using Rails 5.2). -
- opencongress - A website for getting information about US Congress - using Rails 3.0 (archived).
- openproject - A project management app (using Rails 6.0). -
- openstreetmap-website - A map viewing app (using Rails 6.0). -
- opensourcefriday - A project contribution tracking app (using Rails 6.0). -
- otwarchive - A social networking app for fans - using Rails 5.1 -
- passwordPusher - A password delivery app (using Rails 4.2). -
- peatio - A crypto currency exchange app (using Rails 4.0).
- planningalerts-app - A planned applications tracking app (using Rails 5.2). -
- popHealth - A population health reporting app (using Rails 4.1).
- publify - A blogging app (using Rails 5.2).
- quant - A personal health tracker (using Rails 4.1).
- racing_on_rails - A bike racing organization app (using Rails 5.2).
- rapidFTR - An information provider app for aid workers (using Rails 4.0).
- redmine - A project management app (using Rails 5.2). -
- rentmybikes-rails - A marketplace app - (using Rails 4.0).
- reservations - An inventory management app (using Rails 6.0). -
- rletters - A frontend for database of journal articles for researchers (using Rails 6.0). -
- rubygems.org - A gem hosting platform (using Rails 6.0). -
- sanataro - An account tracker (using Rails 4.2).
- scholarsphere - A digital assets management app - using Rails 5.1
- selfstarter - A crowdfunding app (using Rails 4.0).
- sharetribe - A peer-to-peer marketplace platform (using Rails 5.2). -
- socify - A social networking platform - using Rails 5.0
- splits-io - A speedrun data store and analysis engine. (using Rails 6.0). -
- spokenvote - A social voting app (using Rails 4.2).
- stackneveroverflow - A question asking & answering platform - using Rails 5.0
- teambox - A collaboration app - using Rails 3.0 -
(archived). - theodinproject - A teaching & learning platform (using Rails 5.2). -
- tracks - A goal tracking app (using Rails 5.2). -
- trado - An e-commerce platform (using Rails 4.2).
- vglist - A video game library tracking web app (using Rails 6.0). -
- websiteOne - A project tracking app (using Rails 5.2). -
- whitehall - A content management app used by UK government - using Rails 5.1
Gems
[
] : RubyGems link of gems
- rails - A full-stack web development framework
Direct dependencies of the "rails" gem:
- actioncable - A gem to integrate websocket with a Rails app
- Action Cable Overview - actionmailbox - A gem to handle incoming emails within a Rails app
- Action Mailbox Basics - actionmailer - A gem to compose, deliver & test emails within a Rails app
- Action Mailer Basics - actionpack - A gem to manage requests & responses within a Rails app
- actiontext - A gem to integrate rich text editor into a Rails app
- Action Text Overview - actionview - A gem to handle view templates within a Rails app
- Action View Overview - activejob - A gem to handle background jobs within a Rails app
- Active Job Basics - activemodel - A gem to define a set of interfaces to use in model classes within a Rails app
- Active Model Basics - activerecord - A gem to connect model classes with relational databases within a Rails app
- Active Record Basics - activestorage - A gem to handle file uploads to cloud storage providers within a Rails app
- Active Storage Overview - activesupport - A gem to provide some extensions to support a Rails app
- Active Support Core Extensions - railties - A gem to handle gems & engines used in a Rails app to work together
Other gems that can be used with Rails
- ace-rails-ap - A gem to integrate ajax.org cloud9 editor into Rails asset pipeline.
- action_policy - A tool to handle authorization.
- active_decorator - A gem to keep views & helpers object-oriented.
- active_enum - A gem to provide enum classes
- activeadmin - A gem to provide admin panel.
- activerecord-analyze - A gem to add EXPLAIN ANALYZE to Rails Active Record query objects.
- activerecord-import - A gem to handle bulk data insertion using ActiveRecord.
- activerecord-pg_enum - A gem to integrate PostgreSQL's enumerated types with the Rails enum feature.
- activerecord-postgis-adapter - ActiveRecord connection adapter for PostGIS.
- activerecord-postgres_enum - A gem to adds migration and schema.rb support to PostgreSQL enum data types.
- activerecord-sqlserver-adapter - ActiveRecord connection adapter for the SQL Server.
- activerecord-typedstore - A gem to implement
ActiveRecord::Store
with type definition. - activity_notification - A gem to integrate user activity notification.
- aggregate_root - A gem to handle event sourcing.
- ahoy_email - A tool to provide mail analytics.
- algoliasearch-rails - A gem to integrate Algolia search.
- annotate - A gem to annotate rails classes with schema & routes info.
- anycable-rails - A gem to handle websocket server.
- apipie-rails - A REST API documentation tool.
- auther - A gem to provide simple, form-based authentication.
- autoprefixer-rails - A gem to add vendor prefixes to stylesheets.
- avo - Configuration-based, no-maintenance, extendable Ruby on Rails admin panel. rubygems
- better_errors - A tool to provide better error page.
- brakeman - A gem to scan code against security vulnerabilities.
- breadcrumbs_on_rails - A gem to create & manage breadcrumbs-style navigation.
- bulma-rails - A wrapper for Bulma, a CSS framework based on flexbox.
- cancancan - A gem to handle authorization.
- carrierwave - A gem to handle file uploads.
- caxlsx_rails - A gem to generate entity-relationship diagram.
- counter_culture - A gem to provide counter caches.
- devise - A gem to provide authentication.
- doorkeeper - A gem to introduce OAuth2 provider functionality.
- draper - A gem to add presentation logic.
- factory_bot_rails - A fixture replacement for testing in Rails
- filestack-rails - A gem to integrate Filestack.
- formtastic - A Rails form builder gem with semantically rich and accessible markup.
- friendly_id - A gem to deal with slugs & permalinks.
- frozen_record - A gem to provide ActiveRecord-like interface to query static YAML files.
- geokit-rails - A gem to integrate Geokit in Rails apps.
- good_job - A gem to provide Postgres-based ActiveJob backend.
- gretel - A tool to generate breadcrumbs.
- groupdate - A gem to manage temporal data.
- hotwire-rails - A gem to integrate Hotwire in Rails apps.
- image_optim_rails - A gem to handle image optimization.
- js-routes - A tool to generate all Rails routes as JavaScript helpers.
- kaminari - A gem to provide pagination.
- kt-paperclip - A gem to handle file uploads.
- lockbox - A gem to deal with encryption.
- lograge - A gem to customize logger in Rails apps.
- mailkick - A tool to handle mail unsubscriptions.
- marginalia - A gem to attach comments to ActiveRecord's SQL queries.
- metka - A gem to manage tags using Postgresql array columns.
- money-rails - A gem to integrate Money gem in Rails apps.
- paloma - A gem to manage page-specific JavaScript in Rails apps.
- pgcli-rails - A replacement of
rails:dbconsole
command to manage Postgresql. - premailer-rails - A gem to handle email styling.
- prerender_rails - A gem to prerender JavaScript-rendered pages.
- rails-erd - A gem to generate entity-relationship diagram.
- rails-settings-cached - A gem to manage global settings as key-value pairs.
- rails_admin - A gem to create & manage admin panel for Rails app.
- rails_event_store - A gem to implement event store in Rails
- rails_semantic_logger - A gem to provide alternative logging approach for Rails app.
- ranked-model - A gem to handle sorting for rows.
- ransack - A gem to provide search functionality.
- react-rails - A gem to integrate React.js with Rails app.
- redisWebManager - Web interface that allows you to manage easily your Redis instance.
- reform-rails - A gem to wrap Reform gem, a form validation tool, with Rails app.
- rgeo-activerecord - A gem to provide common tools used by RGeo-based spatial adapters.
- rodauth-rails - A gem to wrap Rodauth, an authentication handler, for Rails apps.
- rollup - A gem to handle time-series data in Rails
- route_translator - A tool to handle route translation.
- rspec-rails - A testing framework.
- rubocop-rails - A code style checking tool.
- scenic - A gem to manage database views.
- searchkick - A gem to provide search functionality.
- select2-rails - A gem to integrate Select2 library in Rails apps.
- sequel-activerecord_connection - A gem to allow Sequel to reuse an ActiveRecord connection.
- simple_form - A gem to handle forms.
- solidus - A fork of Spree gem, an open source e-commerce platform.
- sorbet-rails - A gem to integrate Sorbet gem in Rails apps.
- spree - An open source e-commerce platform.
- spring - A gem to preload Rails app.
- sprockets - A gem to compile & serve web assets.
- stimulus-rails - A gem to integrate Stimulus.js in Rails apps.
- tinymce-rails - A gem to integrate Tinymce in Rails apps.
- transloadit-rails - A gem to integrate Transloadit's file uploading and encoding service.
- trove - A gem to handle machine learning models deployment.
- turbo-rails - A gem to integrate Turbo.js in Rails apps.
- view_component - A gem to introduce view components.
- webpacker - A gem to bundle web assets using Webpack.
- zeitwerk - A gem to handle thread-safe code loading.
Starters/Boilerplates
- default_rails_template - Default template for generating new Rails applications.
- docker-Rails-Template - A freshly updated version of "rails new", preconfigured to be run with Docker.
- docker-rails
- jumpstart(excid3) - Easily jumpstart a new Rails application with a bunch of great features by default.
- jumpstart(thomasvanholder) - Template for set-up of Rails 6, Tailwind 2.0 and Devise.
- kickoff_tailwind - A rapid Rails 6 application template for personal use bundled with Tailwind CSS.
- rails-devise-graphql - A Rails 6 boilerplate to create your next Saas product. Preloaded with graphQL, devise, JWT, CanCanCan, RailsAdmin, Rubocop, Rspec, and more.
- rails-template(mattbrictson) - Application template for Rails 6 projects; preloaded with best practices for TDD, security, deployment, and developer productivity.
- rails-template(TristanToye) - MVP Ready Rails - A Template for Your Next Rails App
- rails-template(ackama) - Application template for Rails 6.1 projects; preloaded with best practices for TDD, security, deployment, and developer productivity.
- rails-template(astrocket) - Template for Rails 6.0 + Kubernetes + Webpacker + Stimulus + TailwindCSS + Let's Encrypt.
- rails-template(dao42) - A best & newest & fastest rails 6.x template for senior rails developer.
- rails-templates(lewagon) - Jump start your Rails development with Le Wagon best practices.
- rails-templates(nimblehq) - Our optimized Rails templates used in our projects.
- rails-vue-template - An example of how to use VueJS as a single page application inside Rails using Webpacker.
- rails_new - A thoughtfully designed template for building modern Rails apps. Get started in minutes instead of hours. railsnew.io has a generator listed in the generators section.
- suspenders - A Rails template with our standard defaults, ready to deploy to Heroku.
- vuejs-rails-starterkit - Vue.js + Rails Starting Kit GitHub Template to develop Hybrid Mobile Application.
- rails_api_base - Rails 6 boilerplate project for JSON RESTful APIs.
- rails_hotwire_base - Rails 6 boilerplate project with Hotwire for full-stack applications with a modern SPA-like experience.
Other Rails Tools
Platforms
- Nanobox - A micro-PaaS (μPaaS) for creating consistent, isolated, development environments deployable anywhere
.
Generators
Generator | Ready to run | Complex Apps | Sets git | Heroku config |
---|---|---|---|---|
railsnew.io | A web app where you pick some options from a limited menu, and it generates a template for you to clone. It also has instructions to quickly verify that everything is happy after setup. | yes | yes | yes |
Rails Composer | yes, but Stripe needs to be configured | Example apps reaching a SaaS with Stripe. | yes | yes |
Hix on Rails | yes | Monitoring, Redis Sentinel, Sidekiq. | yes | no |
DevTools
- rails-dashboard - A dev-tool to improve your rails log.
- Optic - Optic automatically documents and tests your APIs.