Class: KamalBackup::Scheduler

Inherits:
Object
  • Object
show all
Defined in:
lib/kamal_backup/scheduler.rb

Instance Method Summary collapse

Constructor Details

#initialize(config, &backup_block) ⇒ Scheduler

Returns a new instance of Scheduler.



5
6
7
8
9
# File 'lib/kamal_backup/scheduler.rb', line 5

def initialize(config, &backup_block)
  @config = config
  @backup_block = backup_block
  @stop = false
end

Instance Method Details

#runObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/kamal_backup/scheduler.rb', line 11

def run
  install_signal_handlers
  sleep_interruptibly(@config.backup_start_delay_seconds)

  until @stop
    started_at = Time.now.utc
    log("backup started at #{started_at.iso8601}")
    begin
      @backup_block.call
      log("backup completed at #{Time.now.utc.iso8601}")
    rescue StandardError => e
      warn("[kamal-backup] backup failed at #{Time.now.utc.iso8601}: #{e.class}: #{e.message}")
    end

    sleep_interruptibly(@config.backup_schedule_seconds)
  end

  log("scheduler stopped at #{Time.now.utc.iso8601}")
end