Ruby on rails 在ruby内存中存储文件
我正试图将一个文件分割成块,并将它们添加到ruby中的临时文件列表中,这样我就可以遍历该列表并将它们上传到分布式存储 我似乎遇到的问题是Ruby on rails 在ruby内存中存储文件,ruby-on-rails,ruby,file,memory,temporary-files,Ruby On Rails,Ruby,File,Memory,Temporary Files,我正试图将一个文件分割成块,并将它们添加到ruby中的临时文件列表中,这样我就可以遍历该列表并将它们上传到分布式存储 我似乎遇到的问题是@fileList中的tempfiles被垃圾收集,列表中充满了关闭的文件 require_relative 'file_uploader' require 'fileutils' require 'tempfile' class FileSplitAlgorytham def initialize #@uploadFileUs = UploadT
@fileList
中的tempfiles被垃圾收集,列表中充满了关闭的文件
require_relative 'file_uploader'
require 'fileutils'
require 'tempfile'
class FileSplitAlgorytham
def initialize
#@uploadFileUs = UploadToUs.new("blogs/1/articles/1/images/10/")
#@uploadFileIreland = UploadToIreland.new("blogs/1/articles/1/images/10/")
@chunksize = 1_073
@fileList = []
end
attr_reader :fileList
def splitFile(file_in)
@filetype = File.extname(file_in)
outfilenum = 1
File.open(file_in,"r") do |fh_in|
until fh_in.eof?
Tempfile.open("#{outfilenum}#{@filetype}") do |fh_out|
line = ""
while fh_out.size <= (@chunksize -line.length) && !fh_in.eof?
line = fh_in.readline
fh_out << line
end
#upload files with modulo and counter?
@fileList << fh_out
end
end
end
end
end
需要相对的“文件上传器”
需要“fileutils”
需要“临时文件”
类FileSplitAlgorytham
def初始化
#@uploadFileUs=UploadToUs.new(“blogs/1/articles/1/images/10/”)
#@uploadFileIreland=uploadToReland.new(“blogs/1/articles/1/images/10/”)
@chunksize=1_073
@文件列表=[]
结束
属性读取器:文件列表
def拆分文件(文件_in)
@filetype=File.extname(文件中的文件)
outfilenum=1
打开(文件在“r”中)do | fh|u在|
直到fh_in.eof?
Tempfile.open(“#{outfilenum}#{@filetype}”)do|fh_out|
line=“”
当fh_out.size时,您需要使用临时文件吗?如果你使用一个可以创建文件的托管平台,似乎可以避免gargabe收集问题。谢谢你的回复,我正在尝试为我的应用构建一个分布式文件存储解决方案。我希望将文件拆分,然后存储(创建)在两个Provider上这不是垃圾收集的问题。文件被关闭,因为您使用的是.open
的块形式,它在完成块时关闭文件。参见Thank@NeilSlater,文件列表您需要使用临时文件吗?如果你使用一个可以创建文件的托管平台,似乎可以避免gargabe收集问题。谢谢你的回复,我正在尝试为我的应用构建一个分布式文件存储解决方案。我希望将文件拆分,然后存储(创建)在两个Provider上这不是垃圾收集的问题。文件被关闭,因为您使用的是.open
的块形式,它在完成块时关闭文件。见“谢谢@NeilSlater,文件列表”