如何在应用程序重新启动之间保留Bluemix文件

时间:2016-12-02 09:10:49

标签: ruby ruby-on-rails-4 paperclip ibm-cloud

我在Bluemix上使用rails 4应用程序,使用paperclip gem附加文件。众所周知,Paperclip正在实际数据库中保存对该文件的引用,将物理文件保存到/public位置。

我正在向此数据库提交一个文件,该文件已保存在此处

/home/vcap/app/public/files/submissions/files/140/original/Successful_Submission.pdf

然后文件检索工作得很好。一旦我重启我的应用程序,我得到:

Errno::ENOENT (No such file or directory @ rb_file_s_lstat - /home/vcap/app/public/files/submissions/files/140/original/Successful_Submission.pdf):

这是因为Bluemix没有持久保存这些信息。如何在应用重启之间抓住这些文件?

2 个答案:

答案 0 :(得分:2)

Bluemix构建于Cloud Foundry之上,它有一个短暂的文件系统,即,一旦您的应用程序停止,平台将声明该文件系统,并在您重新启动应用程序后创建一个全新的文件系统。

不建议在云应用程序中写入本地文件系统,您可能需要重新设计应用程序才能使用Bluemix。一种解决方案是将文件保存在数据库中,而不仅仅是参考文件。

您可以在link找到更多详细信息。

答案 1 :(得分:0)

Bluemix上的每个应用程序实例(基于Cloud Foundry)都具有短暂的存储空间。此存储仅在该特定实例的生命周期内可用。当您重新部署应用时,您将获得一个新的应用实例,并且以前的应用实例上的任何数据都将无法访问。

在为Bluemix / Cloud Foundry设计应用程序时,有一个很好的解释为什么它最适合avoid writing to the local file system

您可能需要查看像CarrierWave to store the files on Amazon S3这样的宝石或其他持久性商店。还有Paperclip,它提供类似的功能。