我使用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
。
答案 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)