Rails - 使用Tempfile在Heroku上写?

时间:2010-12-05 00:06:48

标签: ruby-on-rails ruby-on-rails-3 heroku

我需要能够在请求期间编写临时文件以供使用。

在本地,我可以成功使用以下内容:

    tempfile = File.open(a.original_filename,'w')
    tempfile.write_nonblock(a.body)        
      paperclip stuff........
    tempfile.close 

这很好用,但不是Heroku ......我怎么能用Heroku的限制来完成上述工作:link text

我不理解如何将上述内容翻译成:#{RAILS_ROOT}/tmp/myfile_#{Process.pid}

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:3)

你试过tempfile = File.open("#{RAILS_ROOT}/tmp/myfile_#{Process.pid}",'w')吗?


正确的语法是tempfile = File.new("#{RAILS_ROOT}/tmp/myfile_#{Process.pid}",'w')(参见评论)

答案 1 :(得分:-2)

如果您必须使用回形针,我会为您提供解决方案。将此类作为heroku_compliant_file.rb

包含在lib文件夹中
class HerokuCompliantFile < StringIO
  def initialize(str,filename,content_type)
    @original_filename = filename
    @content_type = content_type
    super(str)
  end
end

在包含回形针的模型中 -

def insert_a_hunk_of_string_into_paperclip(some_object)
  f = HerokuCompliantFile.new(some_object.render,"myfile_#{Process.pid}","application/pdf")
  self.paperclip_model = f
  save
end