Module: Philiprehberger::Scheduler::Persistence
- Included in:
- Philiprehberger::Scheduler
- Defined in:
- lib/philiprehberger/scheduler/persistence.rb
Instance Method Summary collapse
Instance Method Details
#load_state(path) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/philiprehberger/scheduler/persistence.rb', line 19 def load_state(path) return self unless File.exist?(path) data = JSON.parse(File.read(path)) job_states = data.fetch('jobs', []) named_jobs = @mutex.synchronize { @jobs.select(&:name) } job_states.each do |js| job = named_jobs.find { |j| j.name == js['name'] } job&.restore_state(js) end self end |
#save_state(path) ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/philiprehberger/scheduler/persistence.rb', line 9 def save_state(path) state = { 'version' => VERSION, 'saved_at' => Time.now.iso8601, 'jobs' => jobs.select(&:name).map(&:to_state) } File.write(path, JSON.pretty_generate(state)) self end |