Sat*_*uri 24 ruby-on-rails heroku
我有一个托管@ Heroku的应用程序.该应用程序依赖于使用套接字侦听器获取的某些提要.套接字侦听器每秒获取一行XML.一旦我检测到来自侦听器的文件信号结束,我就将文件上传到Amazon S3服务器.但是,直到收到文件信号结束,是否可以将文件内容保存为Heroku中的临时文件?
mu *_*ort 47
您可以使用该#{RAILS_ROOT}/tmp/
目录或Rails.root.join('tmp').to_s
:
Aspen&Bamboo
[...]
有两个可写的目录:./tmp
和./log
(在你的应用程序根目录下).
[...]Cedar
Cedar提供了一个短暂的可写文件系统.您可以随意写入磁盘.在dyno restart和spin-up中你的更改将会丢失.
RAILS_ROOT
适用于较旧的Rails版本,Rails.root
适用于较新版本.
当然,你不能依赖任何幸存的请求,也不能保证你甚至可以使用相同的dyno.
只要您保持在同一个流程或请求中,就Rails.root.join('tmp')
应该可以使用.如果您需要临时数据在请求或进程中生存,那么最好使用其他东西(例如MongoDB或PostgreSQL)作为数据收集到S3的途径.
感谢本杰明·惠勒的抬起头对RAILS_ROOT
来Rails.root
改变.
Tur*_*adg 15
Heroku的只读文件系统上的文档说明您可以使用#{RAILS_ROOT}/tmp
但不提供任何生成临时文件名的示例.这将保证文件名的唯一性:
prefix = 'mydata'
suffix = '.xml'
Tempfile.new [prefix, suffix], "#{Rails.root}/tmp"
Run Code Online (Sandbox Code Playgroud)
请注意,"无法保证此文件将在后续请求中存在(尽管可能存在),因此不应将其用于任何类型的永久存储."
归档时间: |
|
查看次数: |
24932 次 |
最近记录: |