代码之家  ›  专栏  ›  技术社区  ›  Salines

初始化时检查文件夹是否存在,否则创建?

  •  0
  • Salines  · 技术社区  · 6 年前

    当我们要第一次运行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 回复  |  直到 6 年前
        1
  •  0
  •   Salines    6 年前

    这是解决方案

    在流浪者文件的顶部添加:

    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

    创建目录及其所有父目录。例如,

    文件utils.mkdir'/usr/local/lib/ruby'导致 目录,如果它不存在。

    • /usr公司
    • /usr/本地
    • /usr/本地/lib
    • /usr/local/lib/ruby