Rails - 使用 Tempfile 在 Heroku 上写入?

发布于 2024-10-06 05:40:02 字数 475 浏览 0 评论 0原文

我需要能够编写一个临时文件,仅在请求期间使用。

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

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

效果很好,但在 Heroku 上不行...我怎样才能在 Heroku 的限制下执行上述操作: 链接文本

我不明白如何将上述内容翻译为:#{RAILS_ROOT}/tmp/myfile_#{Process.pid}

感谢您的任何帮助您可以在这里提供帮助。

I need to be able to write a temporary file for use during the request only.

Locally I can use the following successfully:

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

That works great, but not on Heroku... How can I do the above with Heroku's restrictions: link text

I'm not understanding how to translate the above into: #{RAILS_ROOT}/tmp/myfile_#{Process.pid}

Thanks for any help you can provide here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岁月蹉跎了容颜 2024-10-13 05:40:02

您是否尝试过 tempfile = File.open("#{RAILS_ROOT}/tmp/myfile_#{Process.pid}",'w')


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

Did you try tempfile = File.open("#{RAILS_ROOT}/tmp/myfile_#{Process.pid}",'w') ?


The correct syntax is tempfile = File.new("#{RAILS_ROOT}/tmp/myfile_#{Process.pid}",'w') (see comments)

落花随流水 2024-10-13 05:40:02

如果您必须使用回形针做一些事情,我可以为您提供一个解决方案。在您的 lib 文件夹中包含此类作为 heroku_company_file.rb

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

I have a solution for you if you have to do stuff with paperclip. Include this class in your lib folder as heroku_compliant_file.rb

class HerokuCompliantFile < StringIO
  def initialize(str,filename,content_type)
    @original_filename = filename
    @content_type = content_type
    super(str)
  end
end

In your model containing the paperclip -

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文