Module: CanvasSync::JobUniqueness::OnConflict
  
  
  
  
  
  
  
      - Extended by:
 
      - ActiveSupport::Autoload
 
  
  
  
  
  
  
  
  
    - Defined in:
 
    - lib/canvas_sync/job_uniqueness/on_conflict.rb,
  lib/canvas_sync/job_uniqueness/on_conflict/log.rb,
 lib/canvas_sync/job_uniqueness/on_conflict/base.rb,
 lib/canvas_sync/job_uniqueness/on_conflict/raise.rb,
 lib/canvas_sync/job_uniqueness/on_conflict/reject.rb,
 lib/canvas_sync/job_uniqueness/on_conflict/reschedule.rb,
 lib/canvas_sync/job_uniqueness/on_conflict/null_strategy.rb
 
  
  
 
Defined Under Namespace
  
    
  
    
      Classes: Base, Log, NullStrategy, Raise, Reject, Reschedule
    
  
  
    
      Class Method Summary
      collapse
    
    
  
  
  
    Class Method Details
    
      
  
  
    .lookup(strategy)  ⇒ Object 
  
  
  
  
    
      
36
37
38
39
40 
     | 
    
      # File 'lib/canvas_sync/job_uniqueness/on_conflict.rb', line 36
def lookup(strategy)
  matching_strategy(strategy.to_s.camelize) ||
    CanvasSync::JobUniqueness.config.conflict_strategies[strategy] ||
    raise(StrategyNotFound, "on_conflict: #{strategy} is not found. Is it declared in the configuration?")
end
     | 
  
 
    
      
  
  
    .validate!(on_conflict, lock_strategy)  ⇒ Object 
  
  
  
  
    
      
42
43
44
45
46
47
48
49
50
51
52
53 
     | 
    
      # File 'lib/canvas_sync/job_uniqueness/on_conflict.rb', line 42
def validate!(on_conflict, lock_strategy)
  on_conflict = { enqueue: on_conflict, perform: on_conflict } unless on_conflict.is_a?(Hash)
  lock_strategy = Strategy.lookup(lock_strategy) if lock_strategy.is_a?(Symbol)
  on_conflict.each do |origin, strategy|
    strategy = OnConflict.lookup(strategy) if strategy.is_a?(Symbol)
    if lock_strategy.locks_on.include?(origin) && !strategy.valid_for.include?(origin)
      raise ArgumentError, "(#{origin.to_s.titleize}) conflict strategy #{strategy.name.underscore} is not valid for lock strategy #{lock_strategy.name.underscore}"
    end
  end
end
     |