Releases: rails/rails
8.0.3
Active Support
-
ActiveSupport::FileUpdateChecker
does not depend onTime.now
to prevent unnecessary reloads with time travel test helpersJan Grodowski
-
Fix
ActiveSupport::BroadcastLogger
from executing a block argument for each logger (tagged, info, etc.).Jared Armstrong
-
Make
ActiveSupport::Logger
#freeze
-friendly.Joshua Young
-
Fix
ActiveSupport::HashWithIndifferentAccess#transform_keys!
removing defaults.Hartley McGuire
-
Fix
ActiveSupport::HashWithIndifferentAccess#tranform_keys!
to handle collisions.If the transformation would result in a key equal to another not yet transformed one,
it would result in keys being lost.Before:
>> {a: 1, b: 2}.with_indifferent_access.transform_keys!(&:succ) => {"c" => 1}
After:
>> {a: 1, b: 2}.with_indifferent_access.transform_keys!(&:succ) => {"c" => 1, "d" => 2}
Jason T Johnson, Jean Boussier
-
Fix
ActiveSupport::Cache::MemCacheStore#read_multi
to handle network errors.This method specifically wasn't handling network errors like other codepaths.
Alessandro Dal Grande
-
Fix configuring
RedisCacheStore
withraw: true
.fatkodima
-
Fix
Enumerable#sole
for infinite collections.fatkodima
Active Model
-
Fix
has_secure_password
to perform confirmation validation of the password even when blank.The validation was incorrectly skipped when the password only contained whitespace characters.
Fabio Sangiovanni
Active Record
-
Fix query cache for pinned connections in multi threaded transactional tests
When a pinned connection is used across separate threads, they now use a separate cache store
for each thread.This improve accuracy of system tests, and any test using multiple threads.
Heinrich Lee Yu, Jean Boussier
-
Don't add
id_value
attribute alias when attribute/column with that name already exists.Rob Lewis
-
Fix false positive change detection involving STI and polymorphic has one relationships.
Polymorphic
has_one
relationships would always be considered changed when defined in a STI child
class, causing nedless extra autosaves.David Fritsch
-
Skip calling
PG::Connection#cancel
incancel_any_running_query
when using libpq >= 18 with pg < 1.6.0, due to incompatibility.
Rollback still runs, but may take longer.Yasuo Honda, Lars Kanis
-
Fix stale association detection for polymorphic
belongs_to
.Florent Beaurain, Thomas Crambert
-
Fix removal of PostgreSQL version comments in
structure.sql
for latest PostgreSQL versions which include\restrict
Brendan Weibrecht
-
Allow setting
schema_format
in database configuration.primary: schema_format: ruby
Useful in multi-database setups to have different formats per-database.
T S Vallender
-
Use ntuples to populate row_count instead of count for Postgres
Jonathan Calvert
-
Fix
#merge
with#or
or#and
and a mixture of attributes and SQL strings resulting in an incorrect query.base = Comment.joins(:post).where(user_id: 1).where("recent = 1") puts base.merge(base.where(draft: true).or(Post.where(archived: true))).to_sql
Before:
SELECT "comments".* FROM "comments" INNER JOIN "posts" ON "posts"."id" = "comments"."post_id" WHERE (recent = 1) AND ( "comments"."user_id" = 1 AND (recent = 1) AND "comments"."draft" = 1 OR "posts"."archived" = 1 )
After:
SELECT "comments".* FROM "comments" INNER JOIN "posts" ON "posts"."id" = "comments"."post_id" WHERE "comments"."user_id" = 1 AND (recent = 1) AND ( "comments"."user_id" = 1 AND (recent = 1) AND "comments"."draft" = 1 OR "posts"."archived" = 1 )
Joshua Young
-
Fix inline
has_and_belongs_to_many
fixtures for tables with composite primary keys.fatkodima
-
Fix migration log message for down operations.
Bernardo Barreto
-
Prepend
extra_flags
in postgres'structure_load
When specifying
structure_load_flags
with a postgres adapter, the flags
were appended to the default flags, instead of prepended.
This caused issues with flags not being taken into account by postgres.Alice Loeser
-
Fix
annotate
comments to propagate toupdate_all
/delete_all
.fatkodima
-
Fix checking whether an unpersisted record is
include?
d in a strictly
loadedhas_and_belongs_to_many
association.Hartley McGuire
-
create_or_find_by
will now correctly rollback a transaction.When using
create_or_find_by
, raising a ActiveRecord::Rollback error
in aafter_save
callback had no effect, the transaction was committed
and a record created.Edouard Chin
-
Gracefully handle
Timeout.timeout
firing during connection configuration.Use of
Timeout.timeout
could result in improperly initialized database connection.This could lead to a partially configured connection being used, resulting in various exceptions,
the most common being with the PostgreSQLAdapter raisingundefined method 'key?' for nil
orTypeError: wrong argument type nil (expected PG::TypeMap)
.Jean Boussier
-
Fix stale state for composite foreign keys in belongs_to associations.
Varun Sharma
Action View
-
Fix label with
for
option not getting prefixed by formnamespace
valueAbeid Ahmed, Hartley McGuire
-
Fix
javascript_include_tag
type
option to accept either strings and symbols.javascript_include_tag "application", type: :module javascript_include_tag "application", type: "module"
Previously, only the string value was recognized.
Jean Boussier
-
Fix
excerpt
helper with non-whitespace separator.Jonathan Hefner
Action Pack
-
URL helpers for engines mounted at the application root handle
SCRIPT_NAME
correctly.Fixed an issue where
SCRIPT_NAME
is not applied to paths generated for routes in an engine
mounted at "/".Mike Dalessio
-
Fix
Rails.application.reload_routes!
from clearing almost all routes.When calling
Rails.application.reload_routes!
inside a middleware of
a Rake task, it was possible under certain conditions that all routes would be cleared.
If ran inside a middleware, this would result in getting a 404 on most page you visit.
This issue was only happening in development.Edouard Chin
-
Address
rack 3.2
deprecations warnings.warning: Status code :unprocessable_entity is deprecated and will be removed in a future version of Rack. Please use :unprocessable_content instead.
Rails API will transparently convert one into the other for the foreseeable future.
Earlopain, Jean Boussier
-
Support hash-source in Content Security Policy.
madogiwa
-
Always return empty body for HEAD requests in
PublicExceptions
and
DebugExceptions
.This is required by
Rack::Lint
(per RFC9110).Hartley McGuire
Active Job
-
Include the actual Active Job locale when serializing rather than I18n locale.
Adrien S
-
Fix
retry_job
instrumentation when using:test
adapter for Active Job.fatkodima
Action Mailer
- No changes.
Action Cable
-
Fixed compatibility with
redis
gem5.4.1
Jean Boussier
-
Fixed a possible race condition in
stream_from
.OuYangJinTing
Active Storage
-
Address deprecation of
Aws::S3::Object#upload_stream
inActiveStorage::Service::S3Service
.Joshua Young
-
Fix
config.active_storage.touch_attachment_records
to work with eager loading.fatkodima
Action Mailbox
- No changes.
Action Text
-
Add rollup-plugin-terser as a dev dependency.
Édouard Chin
Railties
-
Fix
polymorphic_url
andpolymorphic_path
not working when routes are not loaded.Édouard Chin
-
Fix Rails console to not override user defined IRB_NAME.
Only change the prompt name if it hasn't been customized in
.irbrc
.Jarrett Lusso
Guides
- No changes.
8.1.0.beta1
Active Support
-
Add
ActiveSupport::Cache::Store#namespace=
and#namespace
.Can be used as an alternative to
Store#clear
in some situations such as parallel
testing.Nick Schwaderer
-
Create
parallel_worker_id
helper for running parallel tests. This allows users to
know which worker they are currently running in.Nick Schwaderer
-
Make the cache of
ActiveSupport::Cache::Strategy::LocalCache::Middleware
updatable.If the cache client at
Rails.cache
of a booted application changes, the corresponding
mounted middleware needs to update in order for request-local caches to be setup properly.
Otherwise, redundant cache operations will erroneously hit the datastore.Gannon McGibbon
-
Add
assert_events_reported
test helper forActiveSupport::EventReporter
.This new assertion allows testing multiple events in a single block, regardless of order:
assert_events_reported([ { name: "user.created", payload: { id: 123 } }, { name: "email.sent", payload: { to: "user@example.com" } } ]) do create_user_and_send_welcome_email end
George Ma
-
Add
ActiveSupport::TimeZone#standard_name
method.zone = ActiveSupport::TimeZone['Hawaii'] # Old way ActiveSupport::TimeZone::MAPPING[zone.name] # New way zone.standard_name # => 'Pacific/Honolulu'
Bogdan Gusiev
-
Add Structured Event Reporter, accessible via
Rails.event
.The Event Reporter provides a unified interface for producing structured events in Rails
applications:Rails.event.notify("user.signup", user_id: 123, email: "user@example.com")
It supports adding tags to events:
Rails.event.tagged("graphql") do # Event includes tags: { graphql: true } Rails.event.notify("user.signup", user_id: 123, email: "user@example.com") end
As well as context:
# All events will contain context: {request_id: "abc123", shop_id: 456} Rails.event.set_context(request_id: "abc123", shop_id: 456)
Events are emitted to subscribers. Applications register subscribers to
control how events are serialized and emitted. Subscribers must implement
an#emit
method, which receives the event hash:class LogSubscriber def emit(event) payload = event[:payload].map { |key, value| "#{key}=#{value}" }.join(" ") source_location = event[:source_location] log = "[#{event[:name]}] #{payload} at #{source_location[:filepath]}:#{source_location[:lineno]}" Rails.logger.info(log) end end
Adrianna Chang
-
Make
ActiveSupport::Logger
#freeze
-friendly.Joshua Young
-
Make
ActiveSupport::Gzip.compress
deterministic based on input.ActiveSupport::Gzip.compress
used to include a timestamp in the output,
causing consecutive calls with the same input data to have different output
if called during different seconds. It now always sets the timestamp to0
so that the output is identical for any given input.Rob Brackett
-
Given an array of
Thread::Backtrace::Location
objects, the new method
ActiveSupport::BacktraceCleaner#clean_locations
returns an array with the
clean ones:clean_locations = backtrace_cleaner.clean_locations(caller_locations)
Filters and silencers receive strings as usual. However, the
path
attributes of the locations in the returned array are the original,
unfiltered ones, since locations are immutable.Xavier Noria
-
Improve
CurrentAttributes
andExecutionContext
state managment in test cases.Previously these two global state would be entirely cleared out whenever calling
into code that is wrapped by the Rails executor, typically Action Controller or
Active Job helpers:test "#index works" do CurrentUser.id = 42 get :index CurrentUser.id == nil end
Now re-entering the executor properly save and restore that state.
Jean Boussier
-
The new method
ActiveSupport::BacktraceCleaner#first_clean_location
returns the first clean location of the caller's call stack, ornil
.
Locations areThread::Backtrace::Location
objects. Useful when you want to
report the application-level location where something happened as an object.Xavier Noria
-
FileUpdateChecker and EventedFileUpdateChecker ignore changes in Gem.path now.
Ermolaev Andrey, zzak
-
The new method
ActiveSupport::BacktraceCleaner#first_clean_frame
returns
the first clean frame of the caller's backtrace, ornil
. Useful when you
want to report the application-level frame where something happened as a
string.Xavier Noria
-
Always clear
CurrentAttributes
instances.Previously
CurrentAttributes
instance would be reset at the end of requests.
Meaning its attributes would be re-initialized.This is problematic because it assume these objects don't hold any state
other than their declared attribute, which isn't always the case, and
can lead to state leak across request.Now
CurrentAttributes
instances are abandoned at the end of a request,
and a new instance is created at the start of the next request.Jean Boussier, Janko Marohnić
-
Add public API for
before_fork_hook
in parallel testing.Introduces a public API for calling the before fork hooks implemented by parallel testing.
parallelize_before_fork do # perform an action before test processes are forked end
Eileen M. Uchitelle
-
Implement ability to skip creating parallel testing databases.
With parallel testing, Rails will create a database per process. If this isn't
desirable or you would like to implement databases handling on your own, you can
now turn off this default behavior.To skip creating a database per process, you can change it via the
parallelize
method:parallelize(workers: 10, parallelize_databases: false)
or via the application configuration:
config.active_support.parallelize_databases = false
Eileen M. Uchitelle
-
Allow to configure maximum cache key sizes
When the key exceeds the configured limit (250 bytes by default), it will be truncated and
the digest of the rest of the key appended to it.Note that previously
ActiveSupport::Cache::RedisCacheStore
allowed up to 1kb cache keys before
truncation, which is now reduced to 250 bytes.config.cache_store = :redis_cache_store, { max_key_size: 64 }
fatkodima
-
Use
UNLINK
command instead ofDEL
inActiveSupport::Cache::RedisCacheStore
for non-blocking deletion.Aron Roh
-
Add
Cache#read_counter
andCache#write_counter
Rails.cache.write_counter("foo", 1) Rails.cache.read_counter("foo") # => 1 Rails.cache.increment("foo") Rails.cache.read_counter("foo") # => 2
Alex Ghiculescu
-
Introduce ActiveSupport::Testing::ErrorReporterAssertions#capture_error_reports
Captures all reported errors from within the block that match the given
error class.reports = capture_error_reports(IOError) do Rails.error.report(IOError.new("Oops")) Rails.error.report(IOError.new("Oh no")) Rails.error.report(StandardError.new) end assert_equal 2, reports.size assert_equal "Oops", reports.first.error.message assert_equal "Oh no", reports.last.error.message
Andrew Novoselac
-
Introduce ActiveSupport::ErrorReporter#add_middleware
When reporting an error, the error context middleware will be called with the reported error
and base execution context. The stack may mutate the context hash. The mutated context will
then be passed to error subscribers. Middleware receives the same parameters asErrorReporter#report
.Andrew Novoselac, Sam Schmidt
-
Change execution wrapping to report all exceptions, including
Exception
.If a more serious error like
SystemStackError
orNoMemoryError
happens,
the error reporter should be able to report these kinds of exceptions.Gannon McGibbon
-
ActiveSupport::Testing::Parallelization.before_fork_hook
allows declaration of callbacks that
are invoked immediately before forking test workers.Mike Dalessio
-
Allow the
#freeze_time
testing helper to accept a date or time argument.Time.current # => Sun, 09 Jul 2024 15:34:49 EST -05:00 freeze_time Time.current + 1.day sleep 1 Time.current # => Mon, 10 Jul 2024 15:34:49 EST -05:00
Joshua Young
-
ActiveSupport::JSON
now accepts optionsIt is now possible to pass options to
ActiveSupport::JSON
:ActiveSupport::JSON.decode('{"key": "value"}', symbolize_names: true) # => { key: "value" }
matthaigh27
-
ActiveSupport::Testing::NotificationAssertions
'sassert_notification
now matches against payload subsets by default.Previously the following assertion would fail due to excess key vals in the notification payload. Now with payload subset matching, it will pass.
assert_notification("post.submitted", title: "Cool Post") do ActiveSupport::Notifications.instrument("post.submitted", title: "Cool Post", body: "Cool Body") end
Additionally, you can now persist a matched notification for more customized ass...
8.0.2.1
Active Support
- No changes.
Active Model
- No changes.
Active Record
-
Call inspect on ids in RecordNotFound error
Gannon McGibbon, John Hawthorn
Action View
- No changes.
Action Pack
- No changes.
Active Job
- No changes.
Action Mailer
- No changes.
Action Cable
- No changes.
Active Storage
Remove dangerous transformations [CVE-2025-24293] *Zack Deveau*
Action Mailbox
- No changes.
Action Text
- No changes.
Railties
- No changes.
Guides
- No changes.
7.2.2.2
Active Support
- No changes.
Active Model
- No changes.
Active Record
-
Call inspect on ids in RecordNotFound error
Gannon McGibbon, John Hawthorn
Action View
- No changes.
Action Pack
- No changes.
Active Job
- No changes.
Action Mailer
- No changes.
Action Cable
- No changes.
Active Storage
Remove dangerous transformations [CVE-2025-24293] *Zack Deveau*
Action Mailbox
- No changes.
Action Text
- No changes.
Railties
- No changes.
Guides
- No changes.
7.1.5.2
Active Support
- No changes.
Active Model
- No changes.
Active Record
-
Call inspect on ids in RecordNotFound error
Gannon McGibbon, John Hawthorn
Action View
- No changes.
Action Pack
- No changes.
Active Job
- No changes.
Action Mailer
- No changes.
Action Cable
- No changes.
Active Storage
Remove dangerous transformations [CVE-2025-24293] *Zack Deveau*
Action Mailbox
- No changes.
Action Text
- No changes.
Railties
- No changes.
Guides
- No changes.
8.0.2
Active Support
-
Fix setting
to_time_preserves_timezone
fromnew_framework_defaults_8_0.rb
.fatkodima
-
Fix Active Support Cache
fetch_multi
when local store is active.fetch_multi
now properly yield to the provided block for missing entries
that have been recorded as such in the local store.Jean Boussier
-
Fix execution wrapping to report all exceptions, including
Exception
.If a more serious error like
SystemStackError
orNoMemoryError
happens,
the error reporter should be able to report these kinds of exceptions.Gannon McGibbon
-
Fix
RedisCacheStore
andMemCacheStore
to also handle connection pool related errors.These errors are rescued and reported to
Rails.error
.Jean Boussier
-
Fix
ActiveSupport::Cache#read_multi
to respect version expiry when using local cache.zzak
-
Fix
ActiveSupport::MessageVerifier
andActiveSupport::MessageEncryptor
configuration ofon_rotation
callback.verifier.rotate(old_secret).on_rotation { ... }
Now both work as documented.
Jean Boussier
-
Fix
ActiveSupport::MessageVerifier
to always be able to verify both URL-safe and URL-unsafe payloads.This is to allow transitioning seemlessly from either configuration without immediately invalidating
all previously generated signed messages.Jean Boussier, Florent Beaurain, Ali Sepehri
-
Fix
cache.fetch
to honor the provided expiry when:race_condition_ttl
is used.cache.fetch("key", expires_in: 1.hour, race_condition_ttl: 5.second) do "something" end
In the above example, the final cache entry would have a 10 seconds TTL instead
of the requested 1 hour.Dhia
-
Better handle procs with splat arguments in
set_callback
.Radamés Roriz
-
Fix
String#mb_chars
to not mutate the receiver.Previously it would call
force_encoding
on the receiver,
now it dups the receiver first.Jean Boussier
-
Improve
ErrorSubscriber
to also mark error causes as reported.This avoid some cases of errors being reported twice, notably in views because of how
errors are wrapped inActionView::Template::Error
.Jean Boussier
-
Fix
Module#module_parent_name
to return the correct name after the module has been named.When called on an anonymous module, the return value wouldn't change after the module was given a name
later by being assigned to a constant.mod = Module.new mod.module_parent_name # => "Object" MyModule::Something = mod mod.module_parent_name # => "MyModule"
Jean Boussier
Active Model
- No changes.
Active Record
-
Fix inverting
rename_enum_value
when:from
/:to
are provided.fatkodima
-
Prevent persisting invalid record.
Edouard Chin
-
Fix inverting
drop_table
without options.fatkodima
-
Fix count with group by qualified name on loaded relation.
Ryuta Kamizono
-
Fix
sum
with qualified name on loaded relation.Chris Gunther
-
The SQLite3 adapter quotes non-finite Numeric values like "Infinity" and "NaN".
Mike Dalessio
-
Handle libpq returning a database version of 0 on no/bad connection in
PostgreSQLAdapter
.Before, this version would be cached and an error would be raised during connection configuration when
comparing it with the minimum required version for the adapter. This meant that the connection could
never be successfully configured on subsequent reconnection attempts.Now, this is treated as a connection failure consistent with libpq, raising a
ActiveRecord::ConnectionFailed
and ensuring the version isn't cached, which allows the version to be retrieved on the next connection attempt.Joshua Young, Rian McGuire
-
Fix error handling during connection configuration.
Active Record wasn't properly handling errors during the connection configuration phase.
This could lead to a partially configured connection being used, resulting in various exceptions,
the most common being with the PostgreSQLAdapter raisingundefined method
key?' for nilor
TypeError: wrong argument type nil (expected PG::TypeMap)`.Jean Boussier
-
Fix a case where a non-retryable query could be marked retryable.
Hartley McGuire
-
Handle circular references when autosaving associations.
zzak
-
PoolConfig no longer keeps a reference to the connection class.
Keeping a reference to the class caused subtle issues when combined with reloading in
development. Fixes #54343.Mike Dalessio
-
Fix SQL notifications sometimes not sent when using async queries.
Post.async_count ActiveSupport::Notifications.subscribed(->(*) { "Will never reach here" }) do Post.count end
In rare circumstances and under the right race condition, Active Support notifications
would no longer be dispatched after using an asynchronous query.
This is now fixed.Edouard Chin
-
Fix support for PostgreSQL enum types with commas in their name.
Arthur Hess
-
Fix inserts on MySQL with no RETURNING support for a table with multiple auto populated columns.
Nikita Vasilevsky
-
Fix joining on a scoped association with string joins and bind parameters.
class Instructor < ActiveRecord::Base has_many :instructor_roles, -> { active } end class InstructorRole < ActiveRecord::Base scope :active, -> { joins("JOIN students ON instructor_roles.student_id = students.id") .where(students { status: 1 }) } end Instructor.joins(:instructor_roles).first
The above example would result in
ActiveRecord::StatementInvalid
because the
active
scope bind parameters would be lost.Jean Boussier
-
Fix a potential race condition with system tests and transactional fixtures.
Sjoerd Lagarde
-
Fix autosave associations to no longer validated unmodified associated records.
Active Record was incorrectly performing validation on associated record that
weren't created nor modified as part of the transaction:Post.create!(author: User.find(1)) # Fail if user is invalid
Jean Boussier
-
Remember when a database connection has recently been verified (for
two seconds, by default), to avoid repeated reverifications during a
single request.This should recreate a similar rate of verification as in Rails 7.1,
where connections are leased for the duration of a request, and thus
only verified once.Matthew Draper
Action View
-
Respect
html_options[:form]
whencollection_checkboxes
generates the
hidden<input>
.Riccardo Odone
-
Layouts have access to local variables passed to
render
.This fixes #31680 which was a regression in Rails 5.1.
Mike Dalessio
-
Argument errors related to strict locals in templates now raise an
ActionView::StrictLocalsError
, and all other argument errors are reraised as-is.Previously, any
ArgumentError
raised during template rendering was swallowed during strict
local error handling, so that anArgumentError
unrelated to strict locals (e.g., a helper
method invoked with incorrect arguments) would be replaced by a similarArgumentError
with an
unrelated backtrace, making it difficult to debug templates.Now, any
ArgumentError
unrelated to strict locals is reraised, preserving the original
backtrace for developers.Also note that
ActionView::StrictLocalsError
is a subclass ofArgumentError
, so any existing
code that rescuesArgumentError
will continue to work.Fixes #52227.
Mike Dalessio
-
Fix stack overflow error in dependency tracker when dealing with circular dependencies
Jean Boussier
Action Pack
-
Improve
with_routing
test helper to not rebuild the middleware stack.Otherwise some middleware configuration could be lost.
Édouard Chin
-
Add resource name to the
ArgumentError
that's raised when invalid:only
or:except
options are given to#resource
or#resources
This makes it easier to locate the source of the problem, especially for routes drawn by gems.
Before:
:only and :except must include only [:index, :create, :new, :show, :update, :destroy, :edit], but also included [:foo, :bar]
After:
Route `resources :products` - :only and :except must include only [:index, :create, :new, :show, :update, :destroy, :edit], but also included [:foo, :bar]
Jeremy Green
-
Fix
url_for
to handle:path_params
gracefully when it's not aHash
.Prevents various security scanners from causing exceptions.
Martin Emde
-
Fix
ActionDispatch::Executor
to unwrap exceptions like other error reporting middlewares.Jean Boussier
Active Job
- No changes.
Action Mailer
- No changes.
Action Cable
- No changes.
Active Storage
-
A Blob will no longer autosave associated Attachment.
This fixes an issue where a record with an attachment would have
its dirty attributes reset, preventing yourafter commit
callbacks
on that record to behave as expected.Note that this change doesn't require any changes on your application
and is supposed to be internal. Active Storage Attachment will continue
to be autosaved (through a different relation).Edouard-chin
Ac...
8.0.1
Active Support
-
Fix a bug in
ERB::Util.tokenize
that causes incorrect tokenization when ERB tags are preceeded by multibyte characters.Martin Emde
-
Restore the ability to decorate methods generated by
class_attribute
.It always has been complicated to use Module#prepend or an alias method chain
to decorate methods defined byclass_attribute
, but became even harder in 8.0.This capability is now supported for both reader and writer methods.
Jean Boussier
Active Model
- No changes.
Active Record
-
Fix removing foreign keys with :restrict action for MySQ
fatkodima
-
Fix a race condition in
ActiveRecord::Base#method_missing
when lazily defining attributes.If multiple thread were concurrently triggering attribute definition on the same model,
it could result in aNoMethodError
being raised.Jean Boussier
-
Fix MySQL default functions getting dropped when changing a column's nullability.
Bastian Bartmann
-
Fix
add_unique_constraint
/add_check_constraint
/add_foreign_key
to be revertible when given invalid options.fatkodima
-
Fix asynchronous destroying of polymorphic
belongs_to
associations.fatkodima
-
Fix
insert_all
to not update existing records.fatkodima
-
NOT VALID
constraints should not dump increate_table
.Ryuta Kamizono
-
Fix finding by nil composite primary key association.
fatkodima
-
Properly reset composite primary key configuration when setting a primary key.
fatkodima
-
Fix Mysql2Adapter support for prepared statements
Using prepared statements with MySQL could result in a
NoMethodError
exception.Jean Boussier, Leo Arnold, zzak
-
Fix parsing of SQLite foreign key names when they contain non-ASCII characters
Zacharias Knudsen
-
Fix parsing of MySQL 8.0.16+ CHECK constraints when they contain new lines.
Steve Hill
-
Ensure normalized attribute queries use
IS NULL
consistently fornil
and normalizednil
values.Joshua Young
-
Fix
sum
when performing a grouped calculation.User.group(:friendly).sum
no longer worked. This is fixed.Edouard Chin
-
Restore back the ability to pass only database name to
DATABASE_URL
.fatkodima
Action View
-
Fix a crash in ERB template error highlighting when the error occurs on a
line in the compiled template that is past the end of the source template.Martin Emde
-
Improve reliability of ERB template error highlighting.
Fix infinite loops and crashes in highlighting and
improve tolerance for alternate ERB handlers.Martin Emde
Action Pack
-
Add
ActionDispatch::Request::Session#store
method to conform Rack spec.Yaroslav
Active Job
-
Avoid crashing in Active Job logger when logging enqueueing errors
ActiveJob.perform_all_later
could fail with aTypeError
when all
provided jobs failed to be enqueueed.Efstathios Stivaros
Action Mailer
- No changes.
Action Cable
-
Ensure the Postgresql adapter always use a dedicated connection even during system tests.
Fix an issue with the Action Cable Postgresql adapter causing deadlock or various weird
pg client error during system tests.Jean Boussier
Active Storage
- No changes.
Action Mailbox
- No changes.
Action Text
- No changes.
Railties
-
Skip generation system tests related code for CI when
--skip-system-test
is given.fatkodima
-
Don't add bin/thrust if thruster is not in Gemfile.
Étienne Barrié
-
Don't install a package for system test when applications don't use it.
y-yagi
Guides
- No changes.
8.0.0.1
Active Support
- No changes.
Active Model
- No changes.
Active Record
- No changes.
Action View
- No changes.
Action Pack
-
Add validation to content security policies to disallow spaces and semicolons.
Developers should use multiple arguments, and different directive methods instead.Gannon McGibbon
Active Job
- No changes.
Action Mailer
- No changes.
Action Cable
- No changes.
Active Storage
- No changes.
Action Mailbox
- No changes.
Action Text
-
Update vendored trix version to 2.1.10
John Hawthorn
Railties
- No changes.
Guides
- No changes.
7.2.2.1
Active Support
- No changes.
Active Model
- No changes.
Active Record
- No changes.
Action View
- No changes.
Action Pack
-
Add validation to content security policies to disallow spaces and semicolons.
Developers should use multiple arguments, and different directive methods instead.Gannon McGibbon
Active Job
- No changes.
Action Mailer
- No changes.
Action Cable
- No changes.
Active Storage
- No changes.
Action Mailbox
- No changes.
Action Text
-
Update vendored trix version to 2.1.10
John Hawthorn
Railties
- No changes.
Guides
- No changes.
7.1.5.1
Active Support
- No changes.
Active Model
- No changes.
Active Record
- No changes.
Action View
- No changes.
Action Pack
-
Add validation to content security policies to disallow spaces and semicolons.
Developers should use multiple arguments, and different directive methods instead.Gannon McGibbon
Active Job
- No changes.
Action Mailer
- No changes.
Action Cable
- No changes.
Active Storage
- No changes.
Action Mailbox
- No changes.
Action Text
-
Update vendored trix version to 2.1.10
John Hawthorn
Railties
- No changes.
Guides
- No changes.