Class: Wayfarer::Redis::Barrier

Inherits:
Struct
  • Object
show all
Includes:
Connection
Defined in:
lib/wayfarer/redis/barrier.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#batchObject

Returns the value of attribute batch

Returns:

  • (Object)

    the current value of batch



5
6
7
# File 'lib/wayfarer/redis/barrier.rb', line 5

def batch
  @batch
end

Instance Method Details

#peek(urls) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/wayfarer/redis/barrier.rb', line 20

def peek(urls)
  major, minor, = Version.determine

  # SMISMEMBER is only supported on Redis >= 6.2.0
  if major > 6 || (major == 6 && minor >= 2)
    redis { |conn| conn.smismember(redis_key, urls) }.map { |val| val == 1 }
  else
    urls.map { |url| redis { |conn| conn.sismember(redis_key, url) } }
  end
end

#redis_keyObject



8
9
10
# File 'lib/wayfarer/redis/barrier.rb', line 8

def redis_key
  "wayfarer-barrier-#{batch}"
end

#reset!Object



12
13
14
# File 'lib/wayfarer/redis/barrier.rb', line 12

def reset!
  redis { |conn| conn.del(redis_key) }
end

#seen?(url) ⇒ Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/wayfarer/redis/barrier.rb', line 16

def seen?(url)
  !redis { |conn| conn.sadd(redis_key, url) }
end

#unsee(url) ⇒ Object



31
32
33
# File 'lib/wayfarer/redis/barrier.rb', line 31

def unsee(url)
  redis { |conn| conn.srem(redis_key, url) }
end