Class: ActiveSupport::Dependencies::Interlock
- Defined in:
 - activesupport/lib/active_support/dependencies/interlock.rb
 
Instance Method Summary collapse
- #done_running ⇒ Object
 - #done_unloading ⇒ Object
 - 
  
    
      #initialize  ⇒ Interlock 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
:nodoc:.
 - #loading(&block) ⇒ Object
 - #permit_concurrent_loads(&block) ⇒ Object
 - 
  
    
      #raw_state(&block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - #running(&block) ⇒ Object
 - #start_running ⇒ Object
 - #start_unloading ⇒ Object
 - #unloading(&block) ⇒ Object
 
Constructor Details
#initialize ⇒ Interlock
:nodoc:
      8 9 10  | 
    
      # File 'activesupport/lib/active_support/dependencies/interlock.rb', line 8 def initialize # :nodoc: @lock = ActiveSupport::Concurrency::ShareLock.new end  | 
  
Instance Method Details
#done_running ⇒ Object
      32 33 34  | 
    
      # File 'activesupport/lib/active_support/dependencies/interlock.rb', line 32 def done_running @lock.stop_sharing end  | 
  
#done_unloading ⇒ Object
      24 25 26  | 
    
      # File 'activesupport/lib/active_support/dependencies/interlock.rb', line 24 def done_unloading @lock.stop_exclusive(compatible: [:load, :unload]) end  | 
  
#loading(&block) ⇒ Object
      12 13 14  | 
    
      # File 'activesupport/lib/active_support/dependencies/interlock.rb', line 12 def loading(&block) @lock.exclusive(purpose: :load, compatible: [:load], after_compatible: [:load], &block) end  | 
  
#permit_concurrent_loads(&block) ⇒ Object
      40 41 42  | 
    
      # File 'activesupport/lib/active_support/dependencies/interlock.rb', line 40 def permit_concurrent_loads(&block) @lock.yield_shares(compatible: [:load], &block) end  | 
  
#raw_state(&block) ⇒ Object
:nodoc:
      44 45 46  | 
    
      # File 'activesupport/lib/active_support/dependencies/interlock.rb', line 44 def raw_state(&block) # :nodoc: @lock.raw_state(&block) end  | 
  
#running(&block) ⇒ Object
      36 37 38  | 
    
      # File 'activesupport/lib/active_support/dependencies/interlock.rb', line 36 def running(&block) @lock.sharing(&block) end  | 
  
#start_running ⇒ Object
      28 29 30  | 
    
      # File 'activesupport/lib/active_support/dependencies/interlock.rb', line 28 def start_running @lock.start_sharing end  | 
  
#start_unloading ⇒ Object
      20 21 22  | 
    
      # File 'activesupport/lib/active_support/dependencies/interlock.rb', line 20 def start_unloading @lock.start_exclusive(purpose: :unload, compatible: [:load, :unload]) end  | 
  
#unloading(&block) ⇒ Object
      16 17 18  | 
    
      # File 'activesupport/lib/active_support/dependencies/interlock.rb', line 16 def unloading(&block) @lock.exclusive(purpose: :unload, compatible: [:load, :unload], after_compatible: [:load, :unload], &block) end  |