Vagrant при инициализации проверить, существует ли папка, еще создать? - PullRequest
0 голосов
/ 27 ноября 2018

Когда мы хотим запустить vagrant в первый раз, как проверить, есть ли в каталоге проекта синхронизированные папки, а если нет, то создать до того, как будет продолжен процесс?

я пытаюсь:

  config.trigger.before [:up] do |trigger|
    trigger.info = "Create log, tmp, webroot/img folders"
    trigger.run = {path: ".provisioning/before_up.sh"}
  end

и

#!/bin/bash
# before_up.sh

if [ ! -d "logs" ]; then
  sudo mkdir logs
fi

if [ ! -d "tmp" ]; then
  sudo mkdir tmp
fi

if [ ! -d "webroot/img" ]; then
  sudo mkdir webroot/img
fi

, но есть ошибки

==> default: Running triggers before up ...
==> default: Running trigger...
==> default: Create logs, tmp, webroot/img folders
    default: Running local script: .provisioning/before_up.sh
==> default: Trigger run failed
==> default: Permission denied - /Users/me/apps/.provisioning/before_up.sh

1 Ответ

0 голосов
/ 28 ноября 2018

вот решение

вверху файла Vagrant добавьте:

FileUtils.mkdir_p './logs'
FileUtils.mkdir_p './tmp'
FileUtils.mkdir_p './webroot/img'

Vagrant.configure("2") do |config|
 # config here
end

из документов ruby: https://ruby -doc.org / stdlib-1.9.3 / libdoc / fileutils / rdoc / FileUtils.html # method-c-mkdir_p

mkdir_p (list, options = {}) нажмите, чтобы переключить источник Параметры: mode noop verbose

Создает каталог и все его родительские каталоги.Например,

FileUtils.mkdir_p '/ usr / local / lib / ruby' заставляет создавать следующие каталоги, если они не существуют.

  • / usr
  • / usr / local
  • / usr / local / lib
  • / usr / local / lib / ruby ​​
...