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.



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

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

Class Method Details

.[](server, target) ⇒ Object



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

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

.key(server, target) ⇒ Object



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

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

Instance Method Details

#deploying?Boolean

Returns:

  • (Boolean)


111
112
113
114
115
116
117
# File 'lib/bub_bot/deploy_manager.rb', line 111

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



107
108
109
# File 'lib/bub_bot/deploy_manager.rb', line 107

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

#redisObject



128
129
130
# File 'lib/bub_bot/deploy_manager.rb', line 128

def redis
  BubBot::RedisConnection.instance
end

#set(is_deploying) ⇒ Object



119
120
121
122
123
124
125
126
# File 'lib/bub_bot/deploy_manager.rb', line 119

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