2013-08-27 16 views
2

我在製作gem,將/template目錄(位於gem內)的文件複製到控制檯的當前目錄中。Ruby - FileUtils copy_file在Windows上拒絕的權限

這裏是什麼樣子:

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]存在。

任何解決方案?由於

UPDATE回答下面的評論

@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 
+0

你可以試試這個 - http://www.ruby-doc.org/stdlib-2.0/libdoc/fileutils/rdoc/FileUtils.html#method-c-首先chmod? –

+0

你可以在'FileUtils.copy_file'之前加入像'puts'#{template_dir}⇒#{destination_dir}'這樣的調試輸出並顯示輸出嗎? – mudasobwa

+0

感謝您的回覆。我已將問題更新添加到回答你們兩位 – hrsetyono

回答

2

我的壞的結果。我的template目錄包含另一個文件夾。所以,我需要使用cp_r代替copy_file

FileUtils.cp_r(template_dir, destination_dir)