Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Changed the ScopeRegistry and the InstrumentationRegistry to use the

PerThreadRegistry module.
  • Loading branch information...
commit e12901e4235d1ece2a17c5419f4420f1931cc6a4 1 parent 95ac391
John J. Wang wangjohn authored
12 activerecord/lib/active_record/scoping.rb
View
@@ -1,3 +1,5 @@
+require 'active_support/per_thread_registry'
+
module ActiveRecord
module Scoping
extend ActiveSupport::Concern
@@ -34,7 +36,7 @@ def populate_with_current_scope_attributes
# to get the current_scope for the +Board+ model, then you would use the
# following code:
#
- # registry = ActiveRecord::Scoping::ScopeRegistry.current
+ # registry = ActiveRecord::Scoping::ScopeRegistry.instance
# registry.set_value_for(:current_scope, "Board", some_new_scope)
#
# Now when you run:
@@ -48,12 +50,10 @@ def populate_with_current_scope_attributes
# ActiveRecord::Scoping::ScopeRegistry.set_value_for(:current_scope,
# "Board", some_new_scope)
class ScopeRegistry # :nodoc:
- class << self
- delegate :value_for, :set_value_for, to: :current
+ extend ActiveSupport::PerThreadRegistry
- def current
- Thread.current["scope_registry"] ||= new
- end
+ class << self
+ delegate :value_for, :set_value_for, to: :instance
end
VALID_SCOPE_TYPES = [:current_scope, :ignore_default_scope]
4 activerecord/test/cases/base_test.rb
View
@@ -1377,9 +1377,9 @@ def test_current_scope_is_reset
UnloadablePost.send(:current_scope=, UnloadablePost.all)
UnloadablePost.unloadable
- assert_not_nil ActiveRecord::Scoping::ScopeRegistry.current.value_for(:current_scope, "UnloadablePost")
+ assert_not_nil ActiveRecord::Scoping::ScopeRegistry.instance.value_for(:current_scope, "UnloadablePost")
ActiveSupport::Dependencies.remove_unloadable_constants!
- assert_nil ActiveRecord::Scoping::ScopeRegistry.current.value_for(:current_scope, "UnloadablePost")
+ assert_nil ActiveRecord::Scoping::ScopeRegistry.instance.value_for(:current_scope, "UnloadablePost")
ensure
Object.class_eval{ remove_const :UnloadablePost } if defined?(UnloadablePost)
end
9 activesupport/lib/active_support/notifications.rb
View
@@ -1,5 +1,6 @@
require 'active_support/notifications/instrumenter'
require 'active_support/notifications/fanout'
+require 'active_support/per_thread_registry'
module ActiveSupport
# = Notifications
@@ -190,12 +191,10 @@ def instrumenter
# The instrumenters for multiple notifiers are held in a single instance of
# this class.
class InstrumentationRegistry # :nodoc:
- class << self
- delegate :instrumenter_for, to: :current
+ extend ActiveSupport::PerThreadRegistry
- def current
- Thread.current[:instrumentation_registry] ||= new
- end
+ class << self
+ delegate :instrumenter_for, to: :instance
end
def initialize
Please sign in to comment.
Something went wrong with that request. Please try again.