class IsItDoneYet::WebApp
Constants
- ALREADY_EXISTS
- NO_BUILD_STATE
- TTL_SECONDS
- UNKNOWN_BUILD
- UNKNOWN_NODE
Public Instance Methods
clear_nodes(build_id)
click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 61 def clear_nodes(build_id) state = settings.state keys_for_build = state.keys.select { |(b, _n)| b == build_id } keys_for_build.each { |key| state.delete(key) } end
house_keeping()
click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 29 def house_keeping expired_keys = settings.state.each_pair.with_object([]) do |(key, (_b, time)), acc| acc << key if time < Time.now - TTL_SECONDS end expired_keys.each { |key| settings.state.delete(key) } end
key(build_id, node_id)
click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 25 def key(build_id, node_id) [build_id, node_id].freeze end
merge(key:, value_if_absent:, value_if_present:)
click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 42 def merge(key:, value_if_absent:, value_if_present:) settings.state.merge_pair(key, [value_if_absent, Time.now]) do [value_if_present, Time.now] end end
retrieve(key)
click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 48 def retrieve(key) build_state, _t = settings.state[key] build_state end
retrieve_all(build_id)
click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 53 def retrieve_all(build_id) settings.state .each_pair .select { |((b, _n), _v)| build_id == b } .map { |((_b, node_id), (build_state, _t))| [node_id, build_state] } .to_h end
store(key, value)
click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 38 def store(key, value) settings.state[key] = [value, Time.now] end