Class: CoverRage::Stores::Redis
- Inherits:
-
Object
- Object
- CoverRage::Stores::Redis
- Defined in:
- lib/cover_rage/stores/redis.rb
Constant Summary collapse
- KEY =
'cover_rage_records'
Instance Method Summary collapse
- #clear ⇒ Object
- #find(path) ⇒ Object
- #import(records) ⇒ Object
-
#initialize(url) ⇒ Redis
constructor
A new instance of Redis.
- #list ⇒ Object
Constructor Details
#initialize(url) ⇒ Redis
Returns a new instance of Redis.
12 13 14 15 16 17 18 19 |
# File 'lib/cover_rage/stores/redis.rb', line 12 def initialize(url) @redis = if url.start_with?('rediss') ::Redis.new(url: url, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE }) else ::Redis.new(url: url) end end |
Instance Method Details
#clear ⇒ Object
50 51 52 |
# File 'lib/cover_rage/stores/redis.rb', line 50 def clear @redis.del(KEY) end |
#find(path) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/cover_rage/stores/redis.rb', line 36 def find(path) result = @redis.hget(KEY, path) return nil if result.nil? Record.new(**JSON.parse(result)) end |
#import(records) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/cover_rage/stores/redis.rb', line 21 def import(records) loop do break if @redis.watch(KEY) do records_to_save = Record.merge(list, records) if records_to_save.any? arguments = [] records_to_save.each do |record| arguments.push(record.path, JSON.dump(record.to_h)) end @redis.multi { _1.hset(KEY, *arguments) } end end end end |