class People
Attributes
inactive[RW]
Public Class Methods
new(okta: nil, cache_file: nil)
click to toggle source
# File lib/terraorg/model/people.rb, line 20 def initialize(okta: nil, cache_file: nil) @okta = okta @people = {} @inactive = [] @cache_file = cache_file load_cache! if @cache_file end
Public Instance Methods
get_or_create!(id)
click to toggle source
# File lib/terraorg/model/people.rb, line 29 def get_or_create!(id) p = @people[id] return p if p p = Person.new(id, okta: @okta) if p.active? @people[id] = p else @people.delete(id) @inactive.push p end save_cache! if @cache_file return p end
load_cache!()
click to toggle source
# File lib/terraorg/model/people.rb, line 44 def load_cache! return unless File.exist?(@cache_file) JSON.parse(File.read(@cache_file)).each do |id, cache| @people[id] = Person.new(id, cached: cache) end end
save_cache!()
click to toggle source
# File lib/terraorg/model/people.rb, line 52 def save_cache! # Atomic write cache file cf_new = "#{@cache_file}.new" File.write(cf_new, @people.to_json) File.rename(cf_new, @cache_file) end