Class: ActiveFedora::Scoping::ScopeRegistry
- Inherits:
 - 
      Object
      
        
- Object
 - ActiveFedora::Scoping::ScopeRegistry
 
 
- Defined in:
 - lib/active_fedora/scoping.rb
 
Overview
This class stores the :current_scope and :ignore_default_scope values for different classes. The registry is stored as a thread local, which is accessed through ScopeRegistry.current.
This class allows you to store and get the scope values on different classes and different types of scopes. For example, if you are attempting to get the current_scope for the Board model, then you would use the following code:
registry = ActiveFedora::Scoping::ScopeRegistry
registry.set_value_for(:current_scope, Board, some_new_scope)
Now when you run:
registry.value_for(:current_scope, Board)
You will obtain whatever was defined in some_new_scope. The #value_for and #set_value_for methods are delegated to the current ScopeRegistry object, so the above example code can also be called as:
ActiveFedora::Scoping::ScopeRegistry.set_value_for(:current_scope,
    Board, some_new_scope)
  Constant Summary collapse
- VALID_SCOPE_TYPES =
          
:nodoc:
 [:current_scope, :ignore_default_scope].freeze
Class Method Summary collapse
- .raise_invalid_scope_type!(scope_type) ⇒ Object private
 - .registry ⇒ Object
 - 
  
    
      .set_value_for(scope_type, model, value)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Sets the
valuefor a givenscope_typeandmodel. - 
  
    
      .value_for(scope_type, model)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Obtains the value for a given
scope_typeandmodel. 
Class Method Details
.raise_invalid_scope_type!(scope_type) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
      95 96 97  | 
    
      # File 'lib/active_fedora/scoping.rb', line 95 def self.raise_invalid_scope_type!(scope_type) raise ArgumentError, "Invalid scope type '#{scope_type}' sent to the registry. Scope types must be included in VALID_SCOPE_TYPES" unless VALID_SCOPE_TYPES.include?(scope_type) end  | 
  
.registry ⇒ Object
      72 73 74  | 
    
      # File 'lib/active_fedora/scoping.rb', line 72 def self.registry self._registry ||= Hash.new { |hash, key| hash[key] = {} } end  | 
  
.set_value_for(scope_type, model, value) ⇒ Object
Sets the value for a given scope_type and model.
      89 90 91 92  | 
    
      # File 'lib/active_fedora/scoping.rb', line 89 def self.set_value_for(scope_type, model, value) raise_invalid_scope_type!(scope_type) registry[scope_type][model.name] = value end  | 
  
.value_for(scope_type, model) ⇒ Object
Obtains the value for a given scope_type and model.
      77 78 79 80 81 82 83 84 85 86  | 
    
      # File 'lib/active_fedora/scoping.rb', line 77 def self.value_for(scope_type, model) raise_invalid_scope_type!(scope_type) klass = model base = model.base_class while klass <= base value = registry[scope_type][klass.name] return value if value klass = klass.superclass end end  |