rails

    rails/rails

    #290 this week

    Ruby on Rails

    frontend
    activejob
    activerecord
    framework
    html
    mvc
    Ruby
    MIT
    58.7K stars
    22.2K forks
    58.7K GitHub watchers
    Updated 7/9/2026
    View on GitHub

    Backblaze Generative Media Hackathon

    Build the next generation of AI media apps with Genblaze, stored on Backblaze B2. $10,000 in prizes.

    Enter the hackathon

    Loading star history...

    Use Cases & Benefits

    • Provides a full-stack web application framework following the Model-View-Controller pattern for building database-backed applications in Ruby.
    • Integrates multiple libraries like Active Record, Action Pack, and Active Job to streamline web development with convention over configuration.
    • Use for developing scalable, maintainable web applications with complex business logic and database interactions in Ruby.
    • Use for creating real-time features using WebSockets with Action Cable integrated into your web app.
    • Use for building applications that require background job processing and email handling with Active Job and Action Mailer.

    About rails

    Welcome to Rails

    What's Rails?

    Rails is a web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern.

    Understanding the MVC pattern is key to understanding Rails. MVC divides your application into three layers: Model, View, and Controller, each with a specific responsibility.

    Model layer

    The Model layer represents the domain model (such as Account, Product, Person, Post, etc.) and encapsulates the business logic specific to your application. In Rails, database-backed model classes are derived from ActiveRecord::Base. Active Record allows you to present the data from database rows as objects and embellish these data objects with business logic methods. Although most Rails models are backed by a database, models can also be ordinary Ruby classes, or Ruby classes that implement a set of interfaces as provided by the Active Model module.

    View layer

    The View layer is composed of "templates" that are responsible for providing appropriate representations of your application's resources. Templates can come in a variety of formats, but most view templates are HTML with embedded Ruby code (ERB files). Views are typically rendered to generate a controller response or to generate the body of an email. In Rails, View generation is handled by Action View.

    Controller layer

    The Controller layer is responsible for handling incoming HTTP requests and providing a suitable response. Usually, this means returning HTML, but Rails controllers can also generate XML, JSON, PDFs, mobile-specific views, and more. Controllers load and manipulate models, and render view templates in order to generate the appropriate HTTP response. In Rails, incoming requests are routed by Action Dispatch to an appropriate controller, and controller classes are derived from ActionController::Base. Action Dispatch and Action Controller are bundled together in Action Pack.

    Frameworks and libraries

    Active Record, Active Model, Action Pack, and Action View can each be used independently outside Rails.

    In addition to that, Rails also comes with:

    • Action Mailer, a library to generate and send emails
    • Action Mailbox, a library to receive emails within a Rails application
    • Active Job, a framework for declaring jobs and making them run on a variety of queuing backends
    • Action Cable, a framework to integrate WebSockets with a Rails application
    • Active Storage, a library to attach cloud and local files to Rails applications
    • Action Text, a library to handle rich text content
    • Active Support, a collection of utility classes and standard library extensions that are useful for Rails, and may also be used independently outside Rails

    Getting Started

    1. Install Rails at the command prompt if you haven't yet:

      $ gem install rails
      
    2. At the command prompt, create a new Rails application:

      $ rails new myapp
      

      where "myapp" is the application name.

    3. Change directory to myapp and start the web server:

      $ cd myapp
      $ bin/rails server
      

      Run with --help or -h for options.

    4. Go to http://localhost:3000 and you'll see the Rails bootscreen with your Rails and Ruby versions.

    5. Follow the guidelines to start developing your application. You may find the following resources handy:

    Contributing

    We encourage you to contribute to Ruby on Rails! Please check out the Contributing to Ruby on Rails guide for guidelines about how to proceed. Join us!

    Trying to report a possible security vulnerability in Rails? Please check out our security policy for guidelines about how to proceed.

    Everyone interacting in Rails and its sub-projects' codebases, issue trackers, chat rooms, and mailing lists is expected to follow the Rails code of conduct.

    License

    Ruby on Rails is released under the MIT License.

    Discover Repositories

    Search across tracked repositories by name or description