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

Ruby复制文件扩展名

  •  1
  • hlesnt395  · 技术社区  · 8 年前

    我试图执行Chef发出的Ruby block命令,并给出以下错误。

    FileUtils.cp_r Dir.glob "#{node['default']['home']}/standalone/deployments/'*.ear'", "#{node['default']['default_backup_path']}/my_bkp_#{time}", :noop => true, :verbose => true
    

    ArgumentError:参数数量错误(给定3,应为1.2)

    1 回复  |  直到 7 年前
        1
  •  1
  •   hlesnt395    7 年前

    最可能的情况是,您的 Dir.glob FileUtils.cp_r

    FileUtils.cp_r(
      Dir.glob(
        "#{node['default']['home']}/standalone/deployments/'*.ear'", 
        "#{node['default']['default_backup_path']}/my_bkp_#{time}"
      ),
      'destination/',
      noop: true,
      verbose: true
    )
    

    你过了两个 patterns 参数 glob 方法,这是错误的原因:

    没有将字符串隐式转换为整数(TypeError)

    cp_r 对于每个图案,例如:

    FileUtils.cp_r(
      Dir.glob("#{node['default']['home']}/standalone/deployments/'*.ear'"), 
      'destination/',
      noop: true,
      verbose: true
    )
    
    FileUtils.cp_r(
      Dir.glob("#{node['default']['default_backup_path']}/my_bkp_#{time}"),
      'destination/',
      noop: true,
      verbose: true
    )
    

    我认为您的目标是迭代,以获取元素

    • "#{node['default']['home']}/standalone/deployments/'*.ear'"
    • "#{node['default']['default_backup_path']}/my_bkp_#{time}"

    目录。全球 方法,例如:

    patterns = [
      "#{node['default']['home']}/standalone/deployments/'*.ear'", 
      "#{node['default']['default_backup_path']}/my_bkp_#{time}"
    ]
    patterns.each do |pattern|
      FileUtils.cp_r Dir.glob(pattern), 'destination/', noop: true, verbose: true
    end
    

    哪里 'destination/'

    或者如果你想使用 default_backup_path 文件夹作为目标,则不需要 方法,只需将其添加为 dest 参数,作为字符串

    FileUtils.cp_r(
      Dir.glob("#{node['default']['home']}/standalone/deployments/'*.ear'"),
      "#{node['default']['default_backup_path']}/my_bkp_#{time}",
      noop: true,
      verbose: true
    )
    
    推荐文章