Ruby - FileUtils copy_file Windows上的权限被拒绝

时间:2013-08-27 15:21:37

标签: ruby

我正在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]检查了该目录是否存在。

任何解决方案?感谢

更新以回复以下评论

@Babai

我在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

1 个答案:

答案 0 :(得分:2)

我的坏。我的template目录包含另一个文件夹。所以我需要使用cp_r而不是copy_file

FileUtils.cp_r( template_dir, destination_dir )