diff options
author | Mark J. Titorenko <mark@titorenko.net> | 2018-11-29 18:36:20 +0000 |
---|---|---|
committer | Mark J. Titorenko <mark@titorenko.net> | 2018-11-29 18:37:06 +0000 |
commit | 8212dfcf14c63c006b9e1c37595f3d62eab052cf (patch) | |
tree | 0b01f51e99b36d1eaa57b3d86d3217bf01f79357 /activesupport/lib | |
parent | 4b5c4ca377a9b5c75d2c4b4d4f63f53866553b40 (diff) | |
download | rails-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.rb | 10 |
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 |