Генерация имени файла перед загрузкой - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь загрузить последнюю резервную копию данных во время моего шеф-повара, но он пытается загрузить файл до того, как будет сгенерировано имя файла.Каков наилучший подход для этого?Все, что я хочу сделать, это сгенерировать имя файла на основе времени и загрузить его.

Приведенный ниже код выдает ошибку undefined method 'latest_backup' for Custom resource aws_s3_file from cookbook aws.

ruby_block "generate file name" do
  block do
    require 'time'
    latest_backup = "NOT-SET"
    utc_now = Time.now.utc
    utc_midday = Time.new(Time.new.year, Time.new.month, Time.new.day, 22, 00, 1 ).utc
    utc_midnight = Time.new(Time.new.year, Time.new.month, Time.new.day, 10, 00, 1 ).utc
    if (utc_now < utc_midday) && (utc_now > utc_midnight )
      latest_backup = "data_" + Time.now.strftime("%Y%m%d") + "-00001.tgz"
    elsif (utc_now > utc_midday ) && (utc_now < utc_midnight)
      latest_backup = "data_" + Time.now.strftime("%Y%m%d") + "-120001.tgz"
    end
  end
  action :create
end

aws_s3_file "/root/backup.tgz" do
  remote_path "backup-dir/#{latest_backup}"
  bucket "my-backups-bucket"
  region "ap-southeast-2"
end

1 Ответ

0 голосов
/ 17 мая 2018

Вы не можете установить локальную переменную в таком контексте.Поскольку ничто в этом коде не требует ожидания до времени конвергенции, вы можете просто запустить код за пределами ruby_block и иметь нормальную локальную переменную.

...