Tag: 临时文件

系统不想在rails上的ruby中写入tmpfile吗?

我在Ruby on Rails中实现,我想这样做,在我的第一个视图中,我浏览到一个文件(CSV文件)。 我读了它并把它放在TempFile中。 然后在我的第二个视图中,我展示了例如前5行。 然后在我的第三个视图中,我想再次显示第一行。 我的控制器是: class ProjectImporterController = sample_count break end i = i+1 end end end def result tmpfilename = session[:importer_tmpfile] if tmpfilename tmpfile = $tmpfiles[tmpfilename] if tmpfile flash[:error] = “Tempfile doesn’t exist!” return end @parsed_file=CSV::Reader.parse(tmpfile) @samples = [] @parsed_file.each do |row| if i != 0 @samples[i] = row end if i […]

使用Tempfile在rails中创建一个zip文件

我想在rails中创建一个临时的.zip。 为了创建zip文件我使用rubyzip gem。 目前我这样做: zfname = Tempfile.new([‘somename’,’.zip’], Rails.root.to_s + ‘/tmp/’) Zip::ZipFile.open(zfname.path, Zip::ZipFile::CREATE) do |zipfile| zipfile.add(file, basepath + file) end 这会产生以下错误: Zip::ZipError: Zip end of central directory signature not found 是否可以使用Tempfile进行拉链? 如果是的话,这里有什么问题?

rails – x-sendfile +临时文件

前段时间我写了一个关于在rails应用程序中使用临时文件的问题 。 在特定情况下,我决定使用tempfile 如果我还想使用x-sendfile指令( 作为Rails 2中的参数,或作为Rails 3中的配置选项 ),这会导致问题,因此文件发送由我的Web服务器直接处理,而不是我的rails应用程序。 所以我想做这样的事情: require ‘tempfile’ def foo() # creates a temporary file in tmp/ Tempfile.open(‘prefix’, “#{Rails.root}/tmp”) do |f| f.print(‘a temp message’) f.flush send_file(f.path, :x_sendfile => true) # send_file f.path in rails 3 end end 此设置有一个问题:文件在发送之前被删除! 一方面,一旦Tempfile.open块结束, tempfile就会删除该文件。 另一方面, x-sendfile使send_file调用异步 – 它返回的速度非常快,因此服务器几乎没有时间发送文件。 我现在最好的解决方案是使用非临时文件(File而不是Tempfile),然后是定期擦除temp文件夹的cron任务。 这有点不优雅,因为: 我必须使用自己的临时文件命名方案 文件在tmp文件夹上停留的时间比需要的时间长。 有更好的设置吗? 或者,异步send_file上至少有一个“成功”回调,所以我可以在完成后删除f吗? 非常感谢。

创建一个临时文件,而无需在Ruby中打开它

有没有办法创建一个临时文件,而不打开它? 我必须运行一个可执行文件,将它的输出重定向到一个文件,然后读取并解析它。 tempfile创建的所有内容tempfile打开,这会触发错误,因为文件已被锁定。