有沒有辦法指定一個路徑作爲open()
方法的臨時目錄(同時使用open-uri
)?在Ubuntu中爲open()方法指定一個非標準的臨時目錄
我正在使用Ubuntu 12.04和Ruby 2.0.0與RVM - 它使用標準系統臨時目錄(/tmp
)。在我下載大文件時,需要一段時間才能將文件從網絡中取出並移動到目標目錄中;另外,我不想填寫/tmp
文件系統。
我知道還有其他的下載文件的方法,一些允許以塊的形式寫入數據,我只是問關於open-uri
的標準open
方法。
我使用的代碼是:
['ftp://example1.com/a.gz', 'ftp://example2.com/b', 'example3.com/somefile'].
each do |uri|
thread = Thread.new do
3.times do
File.open(uri.split(/\//)[-1], "wb") do |file|
file.write open(uri).read
end
end
end
threads << thread
end
(這一切的一點是,我做一個腳本拉大文件進行任意站點的飽和,以檢查網絡鏈接的方式吞吐量)。
這就是很奇怪,但我已經嘗試將'ENV ['TMPDIR']'和目標目錄設置爲相同的值(這樣我就可以確保所有文件在退出或陷入'SIGINT'時被刪除),並且不起作用,在檢查'ENV's(在一個單獨的會話中)'TMPDIR'什麼都沒有,所以我認爲它顯然不是這樣。現在我在家中使用的是同一臺操作系統和同一臺筆記本電腦上的紅寶石,並且工作完美。我正在設計的機器的設置很可能有問題。謝謝;) –
奇怪: - $不客氣;-) – mdesantis
爲什麼我不能只傳遞一個字符串?當我使用上面的示例代碼時,它可以正常工作,但是當我執行以下操作時沒有問題: 'ENV [「TMPDIR」] =「/ whatever/path」' 'p open(「http://www.google.com」) ' – Florian