Awesome Rails Gem
      
    
    A collection of awesome Ruby Gems for Rails development.
    
      The goal is to help every Rails developer to build an awesome Rails
      product/service.
    
    
    User
    Authentication
    
      - 
        Devise - Devise
        is a flexible authentication solution for Rails based on Warden.
      
 
      - 
        Knock - Seamless JWT
        authentication for Rails API.
      
 
      - 
        Clearance - Rails
        authentication with email & password.
      
 
      - 
        Devise token auth
        - Token based authentication for Rails JSON APIs.
      
 
      - 
        Sorcery - Magical
        Authentication for Rails. Supports ActiveRecord, DataMapper, Mongoid and
        MongoMapper.
      
 
    
    Authorization
    
      - 
        Pundit - Pundit provides a
        set of helpers which guide you in leveraging regular Ruby classes and
        object oriented design patterns to build a simple, robust and scaleable
        authorization system.
      
 
      - 
        cancancan -
        Continuation of CanCan, the authorization Gem for Ruby on Rails.CanCan
        is an authorization library for Ruby on Rails which restricts what
        resources a given user is allowed to access. All permissions are defined
        in a single location (the Ability class) and not duplicated across
        controllers, views, and database queries.
      
 
      - 
        rolify - Role
        management library with resource scoping.
      
 
      - 
        acl9 - Acl9 is a role-based
        authorization system that provides a concise DSL for securing your Rails
        application.
      
 
    
    Omniauth
    
    Active Record
    
      - 
        Enumerize -
        Enumerated attributes with I18n and ActiveRecord/Mongoid support. It can
        be integrated with Simple Form.
      
 
      - 
        counter_culture
        - Turbo-charged counter caches for your Rails app. Huge improvements
        over the Rails standard counter caches.
      
 
      - 
        custom_counter_cache
        - A simple approach to creating a custom counter cache that can be used
        across multiple models.
      
 
      - 
        Sequenced -
        Sequenced is a simple gem that generates scoped sequential IDs for
        ActiveRecord models.
      
 
      - 
        FriendlyId -
        FriendlyId is the “Swiss Army bulldozer” of slugging and permalink
        plugins for ActiveRecord. It allows you to create pretty URL’s and work
        with human-friendly strings as if they were numeric ids for ActiveRecord
        models.
      
 
      - 
        AASM - State machines for
        Ruby classes (plain Ruby, Rails Active Record, Mongoid).
      
 
      - 
        PaperTrail -
        PaperTrail lets you track changes to your models’ data. It’s good for
        auditing or versioning.
      
 
      - 
        paranoia -
        ActiveRecord plugin allowing you to hide and restore records without
        actually deleting them.
      
 
      - 
        Validates - Validates
        provides collection of useful custom validators for Rails applications,
        including:
        
          - EmailValidator
 
          - UrlValidator
 
          - SlugValidator
 
          - MoneyValidator
 
          - IpValidator
 
          - AssociationLengthValidator
 
          - AbsolutePathValidator
 
          - UriComponentValidator
 
          - ColorValidator
 
          - EanValidator (EAN-8 & EAN-13)
 
        
       
      - 
        globalize - Rails
        I18n de-facto standard library for ActiveRecord model/data translation.
      
 
      - 
        deep_cloneable
        - This gem gives every ActiveRecord::Base object the possibility to do a
        deep clone that includes user specified associations.
      
 
      - 
        social_shares -
        Check how many times url was shared in social networks.
      
 
      - 
        public_activity
        - Easy activity tracking for models - similar to Github’s Public
        Activity.
      
 
      - 
        goldiloader -
        Automatic ActiveRecord eager loading to reduce the number of database
        queries run by your application.
      
 
      - 
        Tagging
        
          - 
            ActsAsTaggableOn
            - A tagging plugin for Rails applications that allows for custom
            tagging along dynamic contexts.
          
 
          - 
            closure_tree
            - Easily and efficiently make your ActiveRecord models support
            hierarchies.
          
 
        
       
      - 
        ActionStore -
        Store different kind of actions (Like, Follow, Star, Block …) in one
        table via ActiveRecord Polymorphic Association.
      
 
    
    Plugins
    
      - 
        Spreadsheet -
        Library is designed to read and write Spreadsheet Documents.
      
 
      - 
        Chartkick - Chartkick
        helps your to create beautiful Javascript charts with one line of Ruby.
      
 
      - 
        kaminari - A Scope
        & Engine based, clean, powerful, customizable and sophisticated
        paginator for Rails 3 and 4.
      
 
      - 
        CKEditor - CKEditor
        is a WYSIWYG text editor designed to simplify web content creation. It
        brings common word processing features directly to your web pages.
        Enhance your website experience with our community maintained editor.
        ckeditor.com
      
 
      - 
        HTML::Pipeline -
        GitHub HTML processing filters and utilities. This module includes a
        small framework for defining DOM based content filters and applying them
        to user provided content.
      
 
      - 
        Slack Notifier
        is a simple wrapper to send notifications to
        Slack webhooks.
      
 
      - 
        Rails ERD -
        Generate Entity-Relationship Diagrams for Rails applications.
      
 
      - 
        Parity - Shell
        commands for development, staging, and production parity for Heroku
        apps.
      
 
      - 
        Airbrussh -
        Airbrussh pretties up your SSHKit and Capistrano output
      
 
    
    API
    
      - 
        Grape - Microframework
        to create REST-ful APIs in Ruby.
      
 
      - 
        ActiveModel::Serializers
        - Serializer brings convention over configuration to your JSON
        generation.
      
 
      - 
        Jbuilder - Jbuilder
        gives you a simple DSL for declaring JSON structures that beats
        massaging giant hash structures. This is particularly helpful when the
        generation process is fraught with conditionals and loops.
      
 
      - 
        rest-client -
        Simple HTTP and REST client for Ruby, inspired by microframework syntax
        for specifying actions.
      
 
      - 
        has_scope - Map
        incoming controller parameters to named scopes in your resources.
      
 
      - 
        Documentation
        
          - 
            Grape Swagger
            - Autogenerate documentation on Grape API.
          
 
          - 
            Grape Swagger UI
            - Display documentation that is generated using Grape Swagger.
          
 
          - 
            apiary - Work together to quickly
            design, prototype, document and test APIs.
          
 
          - 
            apiblueprint - API
            Documentation with powerful tooling.
          
 
        
       
    
    Email
    
    File Uploading
    
      - 
        Carrierwave
        - Carrierwave is a classier solution for file uploads for Rails, Sinatra
        and other Ruby web frameworks.
        
          - 
            carrierwave_backgrounder
            - Offload CarrierWave’s image processing and storage to a background
            process using Delayed Job, Resque, Sidekiq, Qu, Queue Classic or
            Girl Friday.
          
 
          - 
            CarrierWave Crop
            - Carrierwave extension to crop uploaded images using Jcrop plugin
            with preview.
          
 
          - 
            CarrierWave ImageOptimizer
            - This gem allows you to simply optimize CarrierWave images via
            jpegoptim or optipng using the image_optimizer gem.
          
 
        
       
      - 
        remotipart -
        Rails jQuery file uploads via standard Rails “remote: true” forms.
      
 
      - 
        MiniMagick -
        MiniMagick is a ruby wrapper for ImageMagick or GraphicsMagick command
        line.
      
 
      - 
        fog - Fog is the Ruby cloud
        services library, top to bottom.
      
 
      - 
        refile - Refile is a
        modern file upload library for Ruby applications. It is simple, yet
        powerful.
      
 
      - 
        Paperclip - Easy
        file attachment management for ActiveRecord.
      
 
      - 
        Dragonfly - Dragonfly
        is for on-the-fly file processing - suitable for images or other
        attachments
      
 
      - 
        shrine -File Attachment
        toolkit for Ruby applications
      
 
    
    Searching
    
      - 
        ransack -
        Ransack enables the creation of both simple and advanced search forms
        for your Ruby on Rails application.
      
 
      - 
        elasticsearch-rails
        - Elasticsearch integrations for ActiveModel/Record and Ruby on Rails.
      
 
      - 
        Chewy - High-level
        Elasticsearch Ruby framework based on the official elasticsearch-ruby
        client.
      
 
      - 
        pg_search -
        pg_search builds ActiveRecord named scopes that take advantage of
        PostgreSQL’s full text search
      
 
      - 
        sunspot - Sunspot is a
        Ruby library for expressive, powerful interaction with the Solr search
        engine. Sunspot is built on top of the RSolr library, which provides a
        low-level interface for Solr interaction; Sunspot provides a simple,
        intuitive, expressive DSL backed by powerful features for indexing
        objects and searching for them.
      
 
      - 
        searchkick -
        Intelligent search made easy with Rails and Elasticsearch.
      
 
    
    Scheduled/Recurrence Jobs
    
      - 
        Whenever - Whenever is a
        Ruby gem that provides a clear syntax for writing and deploying cron
        jobs.
      
 
      - 
        Resque - Redis-backed
        Ruby library for creating background jobs, placing them on multiple
        queues, and processing them later.
      
 
      - 
        Rufus-Scheduler
        - Rufus-scheduler is a Ruby gem for scheduling pieces of code (jobs). It
        understands running a job AT a certain time, IN a certain time, EVERY x
        time or simply via a CRON statement.
      
 
      - 
        Delayed Job
        - Database based asynchronous priority queue system.
      
 
      - 
        Sidekiq - Simple,
        efficient background processing for Ruby.
        
      
 
      - 
        Sucker Punch
        - Sucker punch is a single-process Ruby asynchronous processing library.
      
 
    
    View Helper
    
      - 
        formtastic -
        Formtastic is a Rails FormBuilder DSL (with some other goodies) to make
        it far easier to create beautiful, semantically rich, syntactically
        awesome, readily stylable and wonderfully accessible HTML forms in your
        Rails applications
      
 
      - 
        Simple Form -
        Simple form aims to be as flexible as possible while helping you with
        powerful components to create your forms. The basic goal of Simple Form
        is to not touch your way of defining the layout, letting you find the
        better design for your eyes.
      
 
      - 
        Nested Form - This is
        a Rails gem for conveniently manage multiple nested models in a single
        form. It does so in an unobtrusive way through jQuery or Prototype. It
        can also be integrated with Simple Form.
      
 
      - 
        meta-tags - Search
        Engine Optimization (SEO) plugin for Ruby on Rails applications.
      
 
      - 
        active_link_to -
        active_link_to adds css ‘active’ class to your links.
      
 
      - 
        cells - Cells allow you
        to encapsulate parts of your UI into components into view models. View
        models, or cells, are simple ruby classes that can render templates.
      
 
      - 
        i18n Country Code Select
        - I18n Country Code Select Form Helper for Rails 3 & 4.
      
 
      - 
        Subdivision Select
        - A Rails plugin to populate a state/province select box from
        country_select.
      
 
      - 
        cocoon - Dynamic
        nested forms using jQuery made easy
      
 
    
    Environment Variables
    
      - 
        Config -
        Multi-environment YAML style configurations that helps easily manage
        environment specific settings in an easy and usable manner.
      
 
      - 
        Figaro - Figaro is
        very simple, Heroku-friendly Rails app configuration using ENV and a
        single YAML file.
      
 
      - 
        dotenv - Dotenv is a
        gem that allows you to set your environment variables in .env file, and
        it will load it in to ENV.
      
 
      - 
        opsworks-dotenv
        - Opsworks-dotenv let you configure the environment for you Rails
        application using OpsWorks, Chef and Dotenv.
      
 
    
    Admin Panel
    
      - 
        ActiveAdmin - ActiveAdmin is a
        administration framework for Ruby on Rails applications.
        
      
 
      - 
        RailsAdmin -
        RailsAdmin is a Rails engine that provides an easy-to-use interface for
        managing your data.
      
 
      - 
        Typus - Typus is a control
        panel for Ruby on Rails applications to allow trusted users edit
        structured content.
      
 
      - 
        administrate -
        A Rails engine that helps you put together a super-flexible admin
        dashboard.
      
 
      - 
        Trestle - A
        modern, responsive admin framework for Ruby on Rails
      
 
    
    Logging
    
      - 
        Impressionist
        - Impressionist can log page impressions (technically action
        impressions), but it is not limited to that. You can log impressions
        multiple times per request. And you can also attach it to a model. The
        goal of this project is to provide customizable stats that are
        immediately accessible in your application as opposed to using Google
        Analytics and pulling data using their API.
      
 
      - 
        Ahoy - Ahoy provides a
        solid foundation to track visits and events in Ruby, JavaScript, and
        native apps.
      
 
      - 
        Lograge - An attempt
        to tame Rails’ default policy to log everything.
      
 
    
    Debug
    
      - 
        byebug - Byebug
        is 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.
        
      
 
      - 
        pry-rails - Avoid
        repeating yourself, use pry-rails instead of copying the initializer to
        every rails project. This is a small gem which causes rails console to
        open pry. It therefore depends on pry.
      
 
      - 
        awesome_print
        - Awesome Print is a Ruby library that pretty prints Ruby objects in
        full color exposing their internal structure with proper indentation.
      
 
      - 
        web-console - Web
        Console is a debugging tool for your Ruby on Rails applications.
      
 
      - 
        spring - Spring is a Rails
        application preloader. It 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.
      
 
      - 
        rails-footnotes
        - Rails footnotes displays footnotes in your application for easy
        debugging, such as sessions, request parameters, cookies, filter chain,
        routes, queries, etc.
      
 
      - 
        g - The Kernel.g that works
        like Kernel.p by using terminal-notifier or growl.
      
 
      - 
        terminal-notifier
        - terminal-notifier is a command-line tool to send Mac OS X User
        Notifications, which are available in Mac OS X 10.8 and higher.
      
 
      - 
        letter_opener -
        Preview email in the default browser instead of sending it. This means
        you do not need to set up email delivery in your development
        environment, and you no longer need to worry about accidentally sending
        a test email to someone else’s address.
      
 
      - 
        Better Errors
        - Better errors replaces the standard Rails error page with a much
        better and more useful error page.
        
          - 
            If you would like to use Better Errors’ advanced features (REPL,
            local/instance variable inspection, pretty stack frame names), you
            need to add the
            binding_ _of__caller.
          
 
        
       
      - 
        RailsPanel -
        RailsPanel is a Chrome extension for Rails development that will end
        your tailing of development.log.
      
 
    
    Coding Style
    
      - 
        RuboCop - Rubocop is a
        Ruby static code analyzer. Out of the box it will enforce many of the
        guidelines outlined in the community
        Ruby Style Guide.
      
 
      - 
        Rails Best Practice
        - Rails best practice is a code metric tool to check the quality of
        rails codes.
      
 
      - 
        Metric Fu - A fist
        full of code metrics
      
 
      - 
        Pronto - Quick
        automated code review of your changes
      
 
    
    Testing
    
      - 
        rspec-rails -
        Rspec-rails is a testing framework for Rails 3.x and 4.x.
      
 
      - 
        Capybara - Capybara
        helps you test web applications by simulating how a real user would
        interact with your app. And drivers:
        
          - 
            capybara-webkit
            - Capybara-webkit is a capybara driver that uses Webkit via
            QtWebkit.
          
 
          - 
            selenium-webdriver
            - Selenium-webdriver provides ruby bindings for WebDriver.
          
 
          - 
            poltergeist
            - Poltergeist allows you to run your Capybara tests on a headless
            WebKit browser, provided by PhantomJS.
          
 
          - 
            page-object -
            Page-object is a simple gem that assists in creating flexible page
            objects for testing browser based applications.
          
 
        
       
      - 
        factory_bot -
        Factory_bot is 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 (user, admin_user, and so on),
        including factory inheritance.
      
 
      - 
        factory_bot_rails
        - Factory_bot_rails provides Rails integration for factory_bot.
      
 
      - 
        factory_factory_girl
        - FactoryFactoryGirl lets you generate factory files more efficiently
        with naming rules.
      
 
      - 
        Database Cleaner
        - Database Cleaner is a set of strategies for cleaning your database in
        Ruby.Support ActiveRecord, DataMapper, Sequel, MongoMapper, Mongoid,
        CouchPotato, Ohm and Redis.
      
 
      - 
        shoulda-matchers
        - Shoulda-matchers provides serveral matchers for testing common Rails
        functionality.
      
 
      - 
        ResponseCodeMatchers
        - ResponseCodeMatchers provides rspec matchers to match http response
        code.
      
 
      - 
        SimpleCov -
        SimpleCov is a code coverage analysis tool for Ruby.
      
 
      - 
        Timecop - A gem
        providing “time travel” and “time freezing” capabilities, making it dead
        simple to test time-dependent code.
      
 
      - 
        VCR - Record your test suite’s
        HTTP interactions and replay them during future test runs for fast,
        deterministic, accurate tests.
      
 
    
    Security
    
      - 
        brakeman -
        Brakeman is a static analysis tool which checks Ruby on Rails
        applications for security vulnerabilities.
      
 
      - 
        bundle-audit -
        bundler-audit is a patch-level verification tool for Bundler which
        checks for vulnerable versions of gems and insecure gem sources.
      
 
      - 
        Secure Headers -
        Secure Headers will automatically apply several headers that are related
        to security.
      
 
    
    Production
    
      - 
        Capistrano -
        Remote multi-server automation tool.
      
 
      - 
        Slowpoke -
        Rack::Timeout is great. Slowpoke makes it better.
      
 
      - 
        Rack Attack -
        Rack middleware to blocking & throttling.
      
 
      - 
        Responders - A
        set of Rails responders to dry up your application.
      
 
      - 
        production_rails
        - Best practices for running Rails in production.
      
 
      - 
        Mina - fast deployer
        and server automation tool.
      
 
    
    Error Logging
    
      - 
        Rollbar - Exception
        tracking and logging from Ruby to Rollbar.
      
 
      - 
        Airbrake - Notifier
        gem for integrating apps with Airbrake
      
 
      - 
        Errbit - Open source
        notifier gem compliant with Airbrake.
      
 
    
    Database
    
      - 
        rails_db -
        Rails Database Viewer and SQL Query Runner
      
 
    
    Asset Pipeline
    
      - 
        Alaska - ExecJS
        runtime with persistent connection to nodejs, speeds up your
        coffeescript compilation process during development and deployment.
      
 
    
    Contribute
    
      Contributions welcome! Read the
      contribution guidelines first.