2017-03-07 8 views
0

いくつかのレーキタスクを設定しようとしています。 Gmailに接続して添付ファイルとして送信されるZipファイルをダウンロードする必要があります。私はこれはとは何かを持っていることを前提としていRoR - gmail gemを使用してZIPファイルをダウンロードする

rake aborted! 
Encoding::UndefinedConversionError: "\xED" from ASCII-8BIT to UTF-8 

-

gmail = Gmail.connect(ENV["USERNAME"], ENV["PASSWORD"]) 
msg = gmail.inbox.find(from: ENV["REC_USER"], 
    subject: args[:subject]) 
dir_path = "lib/mfu_payment_data/" 
Dir.mkdir dir_path unless File.exists?(dir_path) 

if msg.first 
    msg.first.attachments.each do |attachment| 
    File.write(File.join(dir_path,attachment.filename),attachment.body.decoded) 
    end 
end 

それは次のようなエラーがスローされます -

私は(csvファイルをダウンロードするために正常に動作します)次のコードを書かれていますattachment.body.decoded、しかし私はこれを他にどのように行うのか分かりません。

+0

バイナリモードで書き込むことができます: 'File.open(File.join(...)、 'wb'){| file | file.write(attachment.body.decoded)} ' – Kris

+1

ありがとうございました!あなたの提案はうまくいった。 :) 私はそれをupvoteできるように答えのセクションに入れてください。 –

答えて

1

を持っていると思う:

File.open('/path/to/file;, 'wb') { |file| file.write(attachment.body.decoded) } 

"b"バイナリファイルモード EOL <抑制します - > WindowsでのCRLF変換。 は、明示的に が指定されていない限り、外部エンコーディングをASCII-8BITに設定します。

モードは、Fileが継承するIOクラスに記述されています。

0

私はあなたがバイナリモードでファイルを書き込ん試すことができますzipファイルを生成するために多くのオプション

Download and unzip

+0

ちょっと晴れて、私はzipファイルを生成したくありません。私はそれをダウンロードしたい。ダウンロードは、ZIPファイルを生成してからダウンロードすることを意味しますか? –

+0

最初にzipファイルを生成してダウンロードしてください。それにコードを追加するだけです – Sunny

+0

http://emmanueloga.com/2011/06/21/dowloading-and-unzipping-a-file.html – Sunny

関連する問題