aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/lib
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2017-05-26 13:12:21 +0930
committerMatthew Draper <matthew@trebex.net>2017-09-01 14:27:13 +0930
commit2e6658ae510e17e9e6e98ebd784066752ea6027c (patch)
treea5424b329e24f37cab0b6e4698b39a0ac592573f /actionview/lib
parent2cd8ac1b68ba04ca12a816c8113271017b3c43c4 (diff)
downloadrails-2e6658ae510e17e9e6e98ebd784066752ea6027c.tar.gz
rails-2e6658ae510e17e9e6e98ebd784066752ea6027c.tar.bz2
rails-2e6658ae510e17e9e6e98ebd784066752ea6027c.zip
Clarify intentions around method redefinitions
Don't use remove_method or remove_possible_method just before a new definition: at best the purpose is unclear, and at worst it creates a race condition. Instead, prefer redefine_method when practical, and silence_redefinition_of_method otherwise.
Diffstat (limited to 'actionview/lib')
-rw-r--r--actionview/lib/action_view/layouts.rb4
-rw-r--r--actionview/lib/action_view/test_case.rb4
2 files changed, 4 insertions, 4 deletions
diff --git a/actionview/lib/action_view/layouts.rb b/actionview/lib/action_view/layouts.rb
index d074654b49..b11ef6e133 100644
--- a/actionview/lib/action_view/layouts.rb
+++ b/actionview/lib/action_view/layouts.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require_relative "rendering"
-require "active_support/core_ext/module/remove_method"
+require "active_support/core_ext/module/redefine_method"
module ActionView
# Layouts reverse the common pattern of including shared headers and footers in many templates to isolate changes in
@@ -279,7 +279,7 @@ module ActionView
# If a layout is not explicitly mentioned then look for a layout with the controller's name.
# if nothing is found then try same procedure to find super class's layout.
def _write_layout_method # :nodoc:
- remove_possible_method(:_layout)
+ silence_redefinition_of_method(:_layout)
prefixes = /\blayouts/.match?(_implied_layout_name) ? [] : ["layouts"]
default_behavior = "lookup_context.find_all('#{_implied_layout_name}', #{prefixes.inspect}, false, [], { formats: formats }).first || super"
diff --git a/actionview/lib/action_view/test_case.rb b/actionview/lib/action_view/test_case.rb
index 6913c31a20..93be2be2d1 100644
--- a/actionview/lib/action_view/test_case.rb
+++ b/actionview/lib/action_view/test_case.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-require "active_support/core_ext/module/remove_method"
+require "active_support/core_ext/module/redefine_method"
require "action_controller"
require "action_controller/test_case"
require "action_view"
@@ -171,7 +171,7 @@ module ActionView
def say_no_to_protect_against_forgery!
_helpers.module_eval do
- remove_possible_method :protect_against_forgery?
+ silence_redefinition_of_method :protect_against_forgery?
def protect_against_forgery?
false
end