Class: DeployState

Inherits:
Object
  • Object
show all
Defined in:
lib/bub_bot/deploy_manager.rb

Constant Summary collapse

ROOT_KEY =
'bub_deploy_status'.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(server, target) ⇒ DeployState

Returns a new instance of DeployState.



98
99
100
101
# File 'lib/bub_bot/deploy_manager.rb', line 98

def initialize(server, target)
  @server = server
  @target = target
end

Class Method Details

.[](server, target) ⇒ Object



90
91
92
# File 'lib/bub_bot/deploy_manager.rb', line 90

def self.[](server, target)
  (@_deploy_states ||= {})[key(server, target)] ||= DeployState.new(server, target)
end

.key(server, target) ⇒ Object



94
95
96
# File 'lib/bub_bot/deploy_manager.rb', line 94

def self.key(server, target)
  "#{server}__#{target}"
end

Instance Method Details

#deploying?Boolean

Returns:

  • (Boolean)


107
108
109
110
111
112
113
# File 'lib/bub_bot/deploy_manager.rb', line 107

def deploying?
  deployed_at = redis.hget(ROOT_KEY, key)

  # If we have a super-old deployed_at, assume something went wrong in the
  # deploy and we failed to capture that.
  return deployed_at && Time.parse(deployed_at) > 30.minutes.ago
end

#keyObject



103
104
105
# File 'lib/bub_bot/deploy_manager.rb', line 103

def key
  self.class.key(@server, @target)
end

#redisObject



124
125
126
# File 'lib/bub_bot/deploy_manager.rb', line 124

def redis
  BubBot::RedisConnection.instance
end

#set(is_deploying) ⇒ Object



115
116
117
118
119
120
121
122
# File 'lib/bub_bot/deploy_manager.rb', line 115

def set(is_deploying)
  puts "set deploying to #{is_deploying} for #{key}"
  if is_deploying
    redis.hset(ROOT_KEY, key, Time.now)
  else
    redis.hdel(ROOT_KEY, key)
  end
end