diff options
author | Guilherme Mansur <guilherme.mansur@shopify.com> | 2019-05-21 14:45:29 -0400 |
---|---|---|
committer | Kasper Timm Hansen <kaspth@gmail.com> | 2019-08-05 02:31:53 +0200 |
commit | 6c6d852854ad068acf7d610808ed501b7d13c7f6 (patch) | |
tree | 179dd1e2f399cba1677c095c319986c616ef4f3f /activesupport/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb | |
parent | 2bd2d853da78c248b1d50add92ce21f43430abe9 (diff) | |
download | rails-6c6d852854ad068acf7d610808ed501b7d13c7f6.tar.gz rails-6c6d852854ad068acf7d610808ed501b7d13c7f6.tar.bz2 rails-6c6d852854ad068acf7d610808ed501b7d13c7f6.zip |
Use Thread.pass instead of Kernel.sleep to trigger race condition
Diffstat (limited to 'activesupport/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb')
-rw-r--r-- | activesupport/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/activesupport/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb b/activesupport/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb index 452a456a52..ea4034303e 100644 --- a/activesupport/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb +++ b/activesupport/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb @@ -53,8 +53,7 @@ class Module EOS end - default_val = (block_given? && default.nil?) ? yield : default - Thread.current["attr_" + name + "_#{sym}"] = default_val unless default_val.nil? + Thread.current["attr_" + name + "_#{sym}"] = default unless default.nil? end end alias :thread_cattr_reader :thread_mattr_reader @@ -97,8 +96,7 @@ class Module EOS end - default_val = (block_given? && default.nil?) ? yield : default - Thread.current["attr_" + name + "_#{sym}"] = default_val unless default_val.nil? + public_send("#{sym}=", default) unless default.nil? end end alias :thread_cattr_writer :thread_mattr_writer @@ -142,9 +140,9 @@ class Module # # Current.new.user = "DHH" # => NoMethodError # Current.new.user # => NoMethodError - def thread_mattr_accessor(*syms, instance_reader: true, instance_writer: true, instance_accessor: true, default: nil, &blk) - thread_mattr_reader(*syms, instance_reader: instance_reader, instance_accessor: instance_accessor, default: default, &blk) - thread_mattr_writer(*syms, instance_writer: instance_writer, instance_accessor: instance_accessor, default: default) + def thread_mattr_accessor(*syms, instance_reader: true, instance_writer: true, instance_accessor: true, default: nil) + thread_mattr_reader(*syms, instance_reader: instance_reader, instance_accessor: instance_accessor, default: default) + thread_mattr_writer(*syms, instance_writer: instance_writer, instance_accessor: instance_accessor) end alias :thread_cattr_accessor :thread_mattr_accessor end |