Sha256: e6df29e4529d3681d3749dad147a65b6fce1f1b319d14d1e69e86aadceaa5557

Contents?: true

Size: 1.23 KB

Versions: 4

Compression:

Stored size: 1.23 KB

Contents

class Indocker::CrontabRedeployRulesBuilder
  CRONTAB = <<-CRONTAB
SHELL=/bin/bash
PATH=/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

%{rules}

  CRONTAB

  LOG_FILE      = "/var/log/indocker-redeploy-%{env}.log"
  COMMAND       = "export TERM=xterm;%{deploy_dir}/indocker/bin/deploy -C %{env} -f -B -y -c %{container_name}"
  REDEPLOY_RULE = %Q{%{schedule} echo `date` "- %{command}..." >> %{log_file}; %{command} 1>/dev/null 2>>%{log_file}; echo `date` "- done, exitcode = $?" >> %{log_file}}

  def initialize(configuration:, logger:)
    @configuration  = configuration
    @logger         = logger
  end

  def call(containers)
    CRONTAB % {
      rules: containers.map{ |c| redeploy_rule(c) }.join("\n"),
    }
  end

  private
  def self.env
    Indocker.configuration_name
  end

  def env
    self.class.env
  end

  def log_file
    LOG_FILE % {
      env: env,
    }
  end

  def command(container)
    COMMAND % {
      env:            env,
      container_name: container.name,
      deploy_dir: Indocker.deploy_dir
    }
  end

  def redeploy_rule(container)
    REDEPLOY_RULE % {
      schedule:   container.redeploy_schedule,
      command:    command(container),
      log_file:   log_file,
    }
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
indocker-0.1.16 lib/indocker/crontab_redeploy_rules_builder.rb
indocker-0.1.15 lib/indocker/crontab_redeploy_rules_builder.rb
indocker-0.1.14 lib/indocker/crontab_redeploy_rules_builder.rb
indocker-0.1.13 lib/indocker/crontab_redeploy_rules_builder.rb