Node.js這裏的開發人員必須和Ruby一起工作,所以我對Ruby中的很多概念都很陌生,可以使用一些幫助。內存在Ruby中轉換流?
我的用例是,我必須從S3下載非常大的換行符分隔的JSON文件,將數據轉換並放回到S3,所有這些都在內存中,而不會將任何內容寫入磁盤。
在節點,我可以做這樣的事情:
s3DownloadStream('my-file').pipe(transformStream).pipe(backToS3Stream)
這將改變在運行的對象,因爲他們進來,把他們S3兼任。
我很難找到一個很好的行動計劃,以在Ruby中實現相同的行爲。我已經看到IO.pipe和Celluloid :: IO作爲可能的選擇,但他們似乎還不像他們能夠做到這一點。
也許這將有助於:https://aws.amazon.com/blogs/developer/downloading-objects-from-amazon-s3-using-the-aws-sdk-for-ruby/ –
@AlexandreAngelim我看到了文章,但似乎是要將大文件下載到磁盤或內存IO。在那篇文章中,我沒有看到任何能夠通過變換來下載下載並同時回到s3的任何內容。我想我將不得不使用fork或Thread.new,但我希望得到一個真實世界的例子,這個例子有人在做一些類似的事情,我可以從中建立起來。 – aloisbarreras
上面的鏈接可以讓你獲得大部分途徑。查看「使用塊」下的代碼。不要將每個塊寫入文件,而是根據需要處理塊,然後將結果上載到S3(使用,我假設,分段上傳API)。 –