在Heroku(Rails)上创建文件时遇到问题

所以我有一个用户模型,在用户注册后,我需要生成一个包含一些特定用户信息的文件。 Heroku不允许我这样做。 除了生成文件并将其写入S3存储桶并从那里引用它之外,还有其他选择吗?

Heroku的文件系统是只读的。 唯一的例外是tmp目录,但那是暂时的。 S3是一种常见的解决方案。 另一种可能性是将“文件”保存到数据库中(在迁移中使用“文本”列)。 您还可以使用某些文档存储,例如CouchDB或MongoDB,并将“文件”存储在那里。 Couch和Mongo有几个Heroku附加组件甚至提供免费套餐。

在Cedar堆栈上,文件系统是短暂的,这意味着文件系统仅在dyno的持续时间内存在(这是一个未知且不可预测的时间量)。

在较旧的堆栈上,只有/ tmp是可写的,并且再次是短暂的。

因此,要生成文件并将其导出,您需要考虑如何交付文件。

如果以后再下载,您是否可以随时从数据库中生成文件(从而节省了写入文件的需要)。

如果现在要下载,请将其流回最终用户。

它是出口到S3,做到这一点。