Rails – 使用Tempfile在Heroku上写?
我需要能够在请求期间编写临时文件以供使用。
在本地我可以成功使用以下内容:
tempfile = File.open(a.original_filename,'w') tempfile.write_nonblock(a.body) paperclip stuff........ tempfile.close
这很好用,但不适用于Heroku ……我如何使用Heroku的限制来完成上述操作: 链接文本
我不明白如何将上述内容翻译成: #{RAILS_ROOT}/tmp/myfile_#{Process.pid}
感谢您在这里提供的任何帮助。
如果你不得不用回形针做东西,我有一个解决方案。 将此类作为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
你试过tempfile = File.open("#{RAILS_ROOT}/tmp/myfile_#{Process.pid}",'w')
?
正确的语法是tempfile = File.new("#{RAILS_ROOT}/tmp/myfile_#{Process.pid}",'w')
(见评论)
- 加载到Heroku时Carrierwave / fog / AWS问题“无法加载此类文件 – 雾”
- Heroku不会重置我的数据库
- 如何在启动rails app时解决内存膨胀问题?
- Rails:CSRF令牌无法正常工作但设置正常
- rake assets:precompile throws Sass :: SyntaxError:“* /”之后的CSS无效
- Ruby on Rails中的Sendgrid /电子邮件发送问题(在Heroku上托管)
- 缺少必需的参数:ras测试中的aws_access_key_id,aws_secret_access_key
- 在Heroku的Sinatra应用程序中,会话不是跨越Dynos共享的
- Facebook登录OmniAuth错误更改被拒绝