8.1.3Оновлено Apr 20, 2026

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.

8.1.32026-03-24T20:26:02Z
Нотатки релізу

Active Support

  • Fix JSONGemCoderEncoder to correctly serialize custom object hash keys.
  • When hash keys are custom objects whose as_json returns a Hash,
  • the encoder now calls to_s on the original key object instead of
  • on the as_json result.
  • Before:
  • hash = {CustomKey.new(123) => "value"}
  • hash.to_json # => {"{:id=>123}":"value"}
  • After:
  • hash.to_json # => {"custom_123":"value"}
  • Dan Sharp
  • Fix inflections to better handle overlapping acronyms.
  • ActiveSupport::Inflector.inflections(:en) do |inflect|
  • inflect.acronym "USD"
  • inflect.acronym "USDC"
  • end
  • "USDC".underscore # => "usdc"
  • Said Kaldybaev
  • Silence Dalli 4.0+ warning when using ActiveSupport::Cache::MemCacheStore.
  • zzak

Active Model

  • Fix Ruby 4.0 delegator warning when calling inspect on attributes.
  • Hammad Khan
  • Fix NoMethodError when deserialising Type::Integer objects marshalled under Rails 8.0.
  • The performance optimisation that replaced @range with @max/@min
  • broke Marshal compatibility. Objects serialised under 8.0 (with @range)
  • and deserialised under 8.1 (expecting @max/@min) would crash with
  • undefined method '<=' for nil because Marshal.load restores instance
  • variables without calling initialize.
  • Edward Woodcock

Active Record

  • Fix insert_all and upsert_all log message when called on anonymous classes.
  • Gabriel Sobrinho
  • Respect ActiveRecord::SchemaDumper.ignore_tables when dumping SQLite virtual tables.
  • Hans Schnedlitz
  • Restore previous instrumenter after execute_or_skip
  • FutureResult#execute_or_skip replaces the thread's instrumenter with an
  • EventBuffer to collect events published during async query execution.
  • If the global async executor is saturated and the caller_runs fallback
  • executes the task on the calling thread, we need to make sure the previous
  • instrumenter is restored or the stale EventBuffer would stay in place and
  • permanently swallow all subsequent sql.active_record notifications on
  • that thread.
  • Rosa Gutierrez
  • Bump the minimum PostgreSQL version to 9.5, due to usage of array_position function.
  • Ivan Kuchin
  • Fix Ruby 4.0 delegator warning when calling inspect on ActiveRecord::Type::Serialized.
  • Hammad Khan
  • Fix support for table names containing hyphens.
  • Evgeniy Demin
  • Fix column deduplication for SQLite3 and PostgreSQL virtual (generated) columns.
  • Column#== and Column#hash now account for virtual? so that the
  • Deduplicable registry does not treat a generated column and a regular
  • column with the same name and type as identical. Previously, if a
  • generated column was registered first, a regular column on a different
  • table could be deduplicated to the generated instance, silently
  • excluding it from INSERT/UPDATE statements.
  • Jay Huber
  • Fix PostgreSQL schema dumping to handle schema-qualified table names in foreign_key references that span different schemas.
  • # before
  • add_foreign_key "hst.event_log_attributes", "hst.event_logs" # emits correctly because they're in the same schema (hst)
  • add_foreign_key "hst.event_log_attributes", "hst.usr.user_profiles", column: "created_by_id" # emits hst.user.* when user.* is expected
  • # after
  • add_foreign_key "hst.event_log_attributes", "hst.event_logs"
  • add_foreign_key "hst.event_log_attributes", "usr.user_profiles", column: "created_by_id"
  • Chiperific

Action View

  • Fix encoding errors for string locals containing non-ASCII characters.
  • Kataoka Katsuki
  • Fix collection caching to only forward expires_in argument if explicitly set.
  • Pieter Visser

Action Pack

  • No changes.

Active Job

  • No changes.

Action Mailer

  • No changes.

Action Cable

  • No changes.

Active Storage

  • Fix ActiveStorage::Blob content type predicate methods to handle nil.
  • Daichi KUDO

Action Mailbox

  • No changes.

Action Text

  • No changes.

Railties

  • Add libvips to generated ci.yml
  • Conditionally adds libvips to ci.yml.
  • Steve Polito

Guides

  • No changes.

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.

Порівняння версій

Оберіть дві версії з changelog notes щоб переглянути зміни.

Тут показані лише релізи, для яких є changelog notes.

Оберіть дві версії щоб порівняти зміни.