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

标签 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] 检查该目录是否存在。

有什么解决办法吗?谢谢

更新以回答下面的评论

@巴拜

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

相关文章:

ruby-on-rails - 为什么 Sinatra 不能正常工作?

ruby - 如何使用 RestClient 进行基本身份验证?

ruby-on-rails - find_or_create_by - 不更新

ruby-on-rails - 从 Ruby 映射中删除值

javascript - javascript中嵌入式ruby的语法错误

ruby - 如何构建大型 Rub​​y 应用程序?

ruby - Ruby 中的 $_[0] ,$_[1] 是什么?

ruby - 如何在 Ruby 中原生实现像 [] 这样的方法?

css - rails : Production assets loading from user's localhost instead of Ubuntu server

ruby-on-rails - 无法转储匿名类 #<Module - rails 3 中的缓存错误