You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.6 KiB

From 67bdba4e63cad218c02dbb3171ddd53353cc0b48 Mon Sep 17 00:00:00 2001
From: Javier Jimenez <javiyu7@gmail.com>
Date: Thu, 5 Jan 2023 21:34:37 +0100
Subject: [PATCH] Backports ruby 3.2 compatibility fixes for rails 6.1
---
actionmailer/lib/action_mailer/base.rb | 2 +-
actionmailer/lib/action_mailer/rescuable.rb | 12 ++++++++----
actionpack/lib/abstract_controller/base.rb | 10 +++++++---
actionpack/lib/abstract_controller/callbacks.rb | 6 +++++-
actionview/lib/action_view/rendering.rb | 6 +++++-
activemodel/lib/active_model/attribute_methods.rb | 2 +-
activerecord/lib/active_record/relation.rb | 8 ++++++--
7 files changed, 33 insertions(+), 13 deletions(-)
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index 6ea5876eda1b8..9c0efb800efd0 100644
--- a/lib/active_record/relation.rb
+++ b/lib/active_record/relation.rb
@@ -406,12 +406,16 @@ def scoping
already_in_scope? ? yield : _scoping(self) { yield }
end
- def _exec_scope(*args, &block) # :nodoc:
+ all_args = RUBY_VERSION < "2.7" ? "*args, &block" : "..."
+
+ class_eval <<-RUBY
+ def _exec_scope(#{all_args}) # :nodoc:
@delegate_to_klass = true
- _scoping(nil) { instance_exec(*args, &block) || self }
+ _scoping(nil) { instance_exec(#{all_args}) || self }
ensure
@delegate_to_klass = false
end
+ RUBY
# Updates all records in the current relation with details given. This method constructs a single SQL UPDATE
# statement and sends it straight to the database. It does not instantiate the involved models and it does not