新推送时上传的文件会消失吗?

时间:2013-09-06 18:12:31

标签: ruby-on-rails git heroku paperclip pull

我的回形针工作正常,我可以将文件上传到我的网站,但每当我进行更新并推送新版本的网站时,我通过回形针上传的所有文件似乎都消失了(所有输入的信息都已记录下来)虽然数据库仍然存在)。

我认为问题在于我没有从网站的实时版本中提取文件,但每当我做一个git pull它告诉我一切都是最新的。无论如何我都下载了我上传的文件。 (我宁愿不使用amazon S3来存储当前的文件)

2 个答案:

答案 0 :(得分:0)

您上传的文件存储在公共文件夹中。公共文件夹未部署代码,因此您的文件假设已消失。

如果您使用亚马逊S3,那么图像将存储在s3中,它将提供一个动态网址来访问图像。然后,您将能够正确访问图像。

您还可以在Dropbox中保存图像。在此应用程序中,图像存储在Dropbox中并在heroku上运行。你可以采取行动:

https://github.com/aman199002/Album-App#开源应用程序来存储相册(在dropbox上)。

http://album-app.herokuapp.com在heroku上运行的应用程序的#Url。

答案 1 :(得分:0)

当您将应用程序部署到Heroku时,您推送的代码将被编译为所谓的slug - 这实际上是运行应用程序所需的所有内容的存档。当您重新启动或扩展应用程序时,原始的slug将被复制以运行。然而,它是一个只读的slug,因此当你上传文件时,它们存在于接收它们的dyno上,所以如果你有多个dynos,你的文件将不会存在于它们之间,然后它们不会在你的应用程序重新启动或你推送新代码时仍然存在有没有办法检索它们。

在Heroku上存储文件的唯一方法是使用外部云存储解决方案,如Amazon S3,Rackspace文件等 - 幸运的是,让Paperclip使用S3作为其存储机制非常简单 - https://devcenter.heroku.com/articles/paperclip-s3有一个教程