Module: RRRSpec::RSyncInfo

Defined in:
lib/rrrspec/redis_models.rb

Constant Summary collapse

WAIT_SERVER_SEC =
10
RSYNC_INFO_KEY =
'rrrspec:rsync_info'

Class Method Summary collapse

Class Method Details

.exist?Boolean

Public: Check its existence.

Returns bool

Returns:

  • (Boolean)


48
49
50
# File 'lib/rrrspec/redis_models.rb', line 48

def self.exist?
  RRRSpec.redis.exists('rrrspec:rsync_info')
end

.heartbeat(time) ⇒ Object

Public: Maintain heartbeat



53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/rrrspec/redis_models.rb', line 53

def self.heartbeat(time)
  unless Dir.exist?(RRRSpec.configuration.rsync_dir)
    FileUtils.makedirs(RRRSpec.configuration.rsync_dir)
  end
  RRRSpec.redis.multi do
    RRRSpec.redis.hmset(
      'rrrspec:rsync_info',
      'rsync_server', RRRSpec.configuration.rsync_server,
      'rsync_dir', RRRSpec.configuration.rsync_dir,
      'rsync_options', RRRSpec.configuration.rsync_options
    )
    RRRSpec.redis.expire('rrrspec:rsync_info', time)
  end
end

.hget_loop(key) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/rrrspec/redis_models.rb', line 19

def self.hget_loop(key)
  loop do
    v = RRRSpec.redis.hget(RSYNC_INFO_KEY, key)
    return v if v.present?
    sleep WAIT_SERVER_SEC
  end
end

.rsync_dirObject

Public



33
34
35
# File 'lib/rrrspec/redis_models.rb', line 33

def self.rsync_dir
  hget_loop('rsync_dir')
end

.rsync_optionsObject

Public



38
39
40
# File 'lib/rrrspec/redis_models.rb', line 38

def self.rsync_options
  hget_loop('rsync_options')
end

.rsync_serverObject

Public



28
29
30
# File 'lib/rrrspec/redis_models.rb', line 28

def self.rsync_server
  hget_loop('rsync_server')
end