我正在研究一个在Heroku堆栈上运行的Rails Web应用程序,它处理一些附加到Rails数据库对象的文档。即假设我们有一个名为product_i
的类/表Product/products
的对象,product_i_prospectus.pdf
是相关的产品说明书,其中每个产品都有一个招股说明书。
由于我正在使用Heroku,因此没有root访问权限,因此我计划使用Amazon S3存储与product_i
关联的静态资源。到目前为止,非常好。
现在假设product_i_attributes.txt
也是我要上传的文件,实际上我想在product_i
对象中填写信息(即表中与{{1}对应的行) }),基于文件product_i
中的信息。
在一句话中:我想根据上传到我的S3存储桶的静态文本文件的内容来创建或更改数据库对象。
严格来说,我实际上不必能够访问它们,我只需要从文本文件中创建一些东西。
答案 0 :(得分:0)
看看aws-sdk-for-ruby宝石。这将允许您访问S3存储桶。
答案 1 :(得分:0)
我做过与csv文件类似的事情。我不会尝试在上传时直接处理文件,因为它可能是资源密集型的。
我的解决方案是将文件上传到s3,然后调用上传后处理csv的后台作业方法(delayed_job,resque等)。然后,您可以在处理完作业后调用删除,以便在处理后不再需要该文件时从s3中删除该文件。
对于Heroku,这将要求您添加一个工作人员(如果您还没有工作人员)来处理将处理文本文件的后台作业。