Module: Resque::Plugins::PopulationControl

Defined in:
lib/resque/plugins/population_control.rb

Defined Under Namespace

Classes: PopulationExceeded

Constant Summary collapse

VERSION =
"0.7.0"

Instance Method Summary collapse

Instance Method Details

#after_perform_population_control(*args) ⇒ Object



39
40
41
# File 'lib/resque/plugins/population_control.rb', line 39

def after_perform_population_control *args
  population_control_decrement
end

#before_enqueue_population_control(*args) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/resque/plugins/population_control.rb', line 25

def before_enqueue_population_control *args
  population_control_count = population_control_increment
  if population_control_count > population_control_max
    population_control_decrement
    if respond_to? :on_population_exceeded
      on_population_exceeded(population_control_max, *args)
    end
    unless @population_control_options[:suppress_exceptions]
      raise PopulationExceeded, "Enqueuing #{name} would exceed max allowed population of #{population_control_max}."
    end
    false
  end
end

#max_population?Boolean

Returns:



21
22
23
# File 'lib/resque/plugins/population_control.rb', line 21

def max_population?
  population_control_count >= population_control_max
end

#on_failure_population_control(e, *args) ⇒ Object



43
44
45
# File 'lib/resque/plugins/population_control.rb', line 43

def on_failure_population_control e, *args
  population_control_decrement
end

#population_control(max, options = {}) ⇒ Object



8
9
10
11
# File 'lib/resque/plugins/population_control.rb', line 8

def population_control max, options = {}
  @population_control_max = max
  @population_control_options = options
end

#population_control_cache_keyObject



67
68
69
# File 'lib/resque/plugins/population_control.rb', line 67

def population_control_cache_key
  "population_control_count_for_#{name}"
end

#population_control_clearObject



17
18
19
# File 'lib/resque/plugins/population_control.rb', line 17

def population_control_clear
  population_control_redis.del population_control_cache_key
end

#population_control_countObject



59
60
61
# File 'lib/resque/plugins/population_control.rb', line 59

def population_control_count
  population_control_redis.get(population_control_cache_key).to_i
end

#population_control_decrementObject



55
56
57
# File 'lib/resque/plugins/population_control.rb', line 55

def population_control_decrement
  population_control_redis.set population_control_cache_key, 0 if population_control_redis.decr(population_control_cache_key) <= 0
end

#population_control_incrementObject



51
52
53
# File 'lib/resque/plugins/population_control.rb', line 51

def population_control_increment
   population_control_redis.incr population_control_cache_key
end

#population_control_maxObject



47
48
49
# File 'lib/resque/plugins/population_control.rb', line 47

def population_control_max
  @population_control_max
end

#population_control_redisObject



63
64
65
# File 'lib/resque/plugins/population_control.rb', line 63

def population_control_redis
  @population_control_redis ||= Resque.redis.redis
end

#population_controlled?Boolean

Returns:



13
14
15
# File 'lib/resque/plugins/population_control.rb', line 13

def population_controlled?
  population_control_count <= population_control_max
end