class CronKubernetes::Scheduler

A singleton that creates and holds the scheduled commands.

Attributes

schedule[R]

Public Class Methods

new() click to toggle source
# File lib/cron_kubernetes/scheduler.rb, line 11
def initialize
  @schedule   = []
  @identifier = CronKubernetes.identifier
end

Public Instance Methods

command(command, schedule:, name: nil) click to toggle source
# File lib/cron_kubernetes/scheduler.rb, line 29
def command(command, schedule:, name: nil)
  @schedule << new_cron_job(schedule, command, name)
end
rake(task, schedule:, name: nil) click to toggle source
# File lib/cron_kubernetes/scheduler.rb, line 16
def rake(task, schedule:, name: nil)
  rake_command = "bundle exec rake #{task} --silent"
  rake_command = "RAILS_ENV=#{rails_env} #{rake_command}" if rails_env
  @schedule << new_cron_job(schedule, rake_command, name)
end
runner(ruby_command, schedule:, name: nil) click to toggle source
# File lib/cron_kubernetes/scheduler.rb, line 22
def runner(ruby_command, schedule:, name: nil)
  env = nil
  env = "-e #{rails_env} " if rails_env
  runner_command = "bin/rails runner #{env}'#{ruby_command}'"
  @schedule << new_cron_job(schedule, runner_command, name)
end

Private Instance Methods

make_command(command) click to toggle source
# File lib/cron_kubernetes/scheduler.rb, line 35
def make_command(command)
  CronKubernetes.job_template.map do |arg|
    if arg == ":job"
      "cd #{root} && #{command} #{CronKubernetes.output}"
    else
      arg
    end
  end
end
new_cron_job(schedule, command, name) click to toggle source
# File lib/cron_kubernetes/scheduler.rb, line 45
def new_cron_job(schedule, command, name)
  CronJob.new(
      schedule:     schedule,
      command:      make_command(command),
      job_manifest: CronKubernetes.manifest,
      name:         name,
      identifier:   @identifier
  )
end
rails_env() click to toggle source
# File lib/cron_kubernetes/scheduler.rb, line 55
def rails_env
  ENV["RAILS_ENV"]
end
root() click to toggle source
# File lib/cron_kubernetes/scheduler.rb, line 59
def root
  return Rails.root if defined? Rails
  Dir.pwd
end