Class: Evilution::Session::Store
- Inherits:
-
Object
- Object
- Evilution::Session::Store
- Defined in:
- lib/evilution/session/store.rb
Constant Summary collapse
- DEFAULT_DIR =
".evilution/results"
Instance Method Summary collapse
- #gc(older_than:) ⇒ Object
-
#initialize(results_dir: DEFAULT_DIR) ⇒ Store
constructor
A new instance of Store.
- #list ⇒ Object
- #load(path) ⇒ Object
- #save(summary) ⇒ Object
Constructor Details
#initialize(results_dir: DEFAULT_DIR) ⇒ Store
Returns a new instance of Store.
13 14 15 |
# File 'lib/evilution/session/store.rb', line 13 def initialize(results_dir: DEFAULT_DIR) @results_dir = results_dir end |
Instance Method Details
#gc(older_than:) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/evilution/session/store.rb', line 44 def gc(older_than:) return [] unless Dir.exist?(@results_dir) deleted = [] Dir.glob(File.join(@results_dir, "*.json")).each do |file| = (File.basename(file)) next unless next unless < older_than File.delete(file) deleted << file end deleted end |
#list ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/evilution/session/store.rb', line 28 def list return [] unless Dir.exist?(@results_dir) Dir .glob(File.join(@results_dir, "*.json")) .sort_by { |f| File.basename(f) } .reverse .filter_map { |f| build_list_entry(f) } end |
#load(path) ⇒ Object
38 39 40 41 42 |
# File 'lib/evilution/session/store.rb', line 38 def load(path) raise Evilution::Error, "session file not found: #{path}" unless File.exist?(path) JSON.parse(File.read(path)) end |
#save(summary) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/evilution/session/store.rb', line 17 def save(summary) FileUtils.mkdir_p(@results_dir) now = Time.now data = build_session_data(summary, now) filename = "#{(now)}-#{SecureRandom.hex(4)}.json" path = File.join(@results_dir, filename) atomic_write(path, JSON.pretty_generate(data)) path end |