Zippy はこれで機能します。これを行うにはもっとクールな方法があるかもしれませんが、本質的にドキュメントがないため、Rakefile で Zippy を使用してディレクトリを再帰的にコピーするために私が思いついた方法を次に示します。この Rakefile は Rails 環境で使用されるため、Gem 要件を Gemfile に入れます。
#Gemfile
source 'http://rubygems.org'
gem 'rails'
gem 'zippy'
そして、これがRakefileです
#Rakefile
def add_file( zippyfile, dst_dir, f )
zippyfile["#{dst_dir}/#{f}"] = File.open(f)
end
def add_dir( zippyfile, dst_dir, d )
glob = "#{d}/**/*"
FileList.new( glob ).each { |f|
if (File.file?(f))
add_file zippyfile, dst_dir, f
end
}
end
task :myzip do
Zippy.create 'my.zip' do |z|
add_dir z, 'my', 'app'
add_dir z, 'my', 'config'
#...
add_file z, 'my', 'config.ru'
add_file z, 'my', 'Gemfile'
#...
end
end
これで、次のように使用できます。
C:\> cd my
C:\my> rake myzip
そしてmy.zip
、選択したファイルとディレクトリのコピーを含む「my」と呼ばれる内部ディレクトリを含むファイルが作成されます。