FileUtil不会复制" .gitignore"

时间:2014-08-17 13:57:30

标签: ruby

我使用FileUtils.cp_r()复制整个文件夹。除.gitignore之外,复制该文件夹中的所有文件。如果我将文件的名称更改为gitignore(没有句点),则可以正常工作。

我猜是因为文件的名称对Ruby无效。有解决方案吗?

这是我的代码:

require "fileutils"

module MyApp
  def self.create
    # root of the gem dir
    root = File.expand_path("..", File.dirname(__FILE__))

    # "/template" is the folder that I want to copy
    src_dir = File.join(root, "template")

    # destination is where the command prompt opened
    destination = Dir.pwd

    FileUtils.cp_r( Dir["#{src_dir}/*"], destination)
  end
end

我正在使用Windows 8.1 Update 1.但是我使用Mac的朋友测试了我的宝石并且没有获得.gitignore

1 个答案:

答案 0 :(得分:2)

这是问题所在:

Dir["#{src_dir}/*"]

Globbing不包含以.开头的文件名。

请使用其他类似的方法:

sources = Dir.entries("#{src_dir}/").reject{ |e| e == '.' || e == '..' }.map{ |e| "#{src_dir}/#{e}" }
FileUtils.cp_r(sources, destination)

您还可以使用File::FNM_DOTMATCH

Dir.glob("#{src_dir}/*", File::FNM_DOTMATCH)