Ruby で GPGME を使用して大きなファイル (使用可能なメモリよりも大きい) を暗号化するのが困難です。
#!/usr/bin/ruby
require 'gpgme'
def gpgfile(localfile)
crypto = GPGME::Crypto.new
filebasename = File.basename(localfile)
filecripted = crypto.encrypt File.read(localfile), :recipients => "info@address.com", :always_trust => true
File.open("#{localfile}.gpg", 'w') { |file| file.write(filecripted) }
end
gpgpfile("/home/largefile.data")
この場合、メモリ割り当てのエラーが発生しました: 「読み取り:メモリの割り当てに失敗しました(NoMemoryError)」
誰かがソースファイルをチャンクごとに(たとえば100Mb)読み取り、暗号化を介してそれらを書き込む方法を説明できますか?