aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/concern.rb
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/active_support/concern.rb
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/active_support/concern.rb')
-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