我正在制作 gem
将文件从 /template
目录(在 gem 内)复制到控制台的当前目录。
它看起来像这样:
require "fileutils"
# Get the console's current directory
destination_dir = Dir.pwd
# Home directory of my gem, looks like C:/Ruby193/lib/ruby/gems/1.9.1/gems/my_gem-1.0.0
home_dir = File.expand_path( "..", File.dirname(__FILE__) )
# Template directory, looks like C:/Ruby193/lib/ruby/gems/1.9.1/gems/my_gem-1.0.0/template
template_dir = File.join( home_dir, "template" )
FileUtils.copy_file( template_dir, destination_dir )
我得到了这个错误:
C:/Ruby193/lib/ruby/1.9.1/fileutils.rb:1370:in `initialize': Permission denied -
C:/Ruby193/lib/ruby/gems/1.9.1/gems/my_gem-1.0.0/template (Errno::
EACCES)
我已通过运行 Dir[template_dir]
检查该目录是否存在。
有什么解决办法吗?谢谢
更新以回答下面的评论
@巴拜
我在copy_file
之前添加了这一行,但仍然不起作用。我这样做对吗?
FileUtils.chmod(0777, template_dir)
@mudasobwa
这是代码的结果
# puts "#{template_dir} \n #{destination_dir}"
C:/Ruby193/lib/ruby/gems/1.9.1/gems/my_gem-1.0.0/template
C:/Users/myname/Documents/Test
最佳答案
我的错。我的 template
目录包含另一个文件夹。所以我需要使用 cp_r
而不是 copy_file
FileUtils.cp_r( template_dir, destination_dir )
关于Ruby - FileUtils copy_file Windows 上的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18469555/