aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorMark J. Titorenko <mark@titorenko.net>2018-11-29 18:36:20 +0000
committerMark J. Titorenko <mark@titorenko.net>2018-11-29 18:37:06 +0000
commit8212dfcf14c63c006b9e1c37595f3d62eab052cf (patch)
tree0b01f51e99b36d1eaa57b3d86d3217bf01f79357 /activesupport/lib
parent4b5c4ca377a9b5c75d2c4b4d4f63f53866553b40 (diff)
downloadrails-8212dfcf14c63c006b9e1c37595f3d62eab052cf.tar.gz
rails-8212dfcf14c63c006b9e1c37595f3d62eab052cf.tar.bz2
rails-8212dfcf14c63c006b9e1c37595f3d62eab052cf.zip
Do nothing when the same block is included again.
If the same block is included multiple times, we no longer raise an exception or overwrite the included block instance variable. Fixes #14802. [Mark J. Titorenko + Vlad Bokov]
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/concern.rb10
1 files changed, 7 insertions, 3 deletions
diff --git a/activesupport/lib/active_support/concern.rb b/activesupport/lib/active_support/concern.rb
index b0a0d845e5..5d356a0ab6 100644
--- a/activesupport/lib/active_support/concern.rb
+++ b/activesupport/lib/active_support/concern.rb
@@ -125,9 +125,13 @@ module ActiveSupport
def included(base = nil, &block)
if base.nil?
- raise MultipleIncludedBlocks if instance_variable_defined?(:@_included_block)
-
- @_included_block = block
+ if instance_variable_defined?(:@_included_block)
+ if @_included_block.source_location != block.source_location
+ raise MultipleIncludedBlocks
+ end
+ else
+ @_included_block = block
+ end
else
super
end