2

ディレクトリ(gem内)からコンソールの現在のディレクトリにgemファイルをコピーしています。/template

外観は次のとおりです。

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
4

1 に答える 1

2

私の悪い。私のtemplateディレクトリには別のフォルダが含まれています。だから私はcp_r代わりに使用する必要がありますcopy_file

FileUtils.cp_r( template_dir, destination_dir )
于 2013-08-27T16:20:55.243 に答える