我有一个部署到Heroku的rails应用程序。它有图像上传。再次部署到heroku后,我无法看到上传的旧图像。
重新部署应用时,heroku是否会重置图像文件夹?请告诉我背后的原因。
答案 0 :(得分:2)
Heroku使用'ephemeral file system',从应用程序架构的角度来看,它应该被认为是只读的 - 一旦dyno停止或重新启动它就会被丢弃(与其他情况一样,它会在之后发生)每次推送),并且也不在多个dynos之间共享。
这适用于执行代码,因为大多数应用程序数据存储在独立于dynos的数据库中。但是,对于文件上传,这会出现问题,因此任何上传都不应直接存储在dyno文件系统中。
最简单的解决方案是使用像Amazon S3这样的文件上传存储解决方案,如果使用像 Paperclip 这样的gem,这在gem中本身就支持。 Heroku开发中心有一篇关于使用S3和Heroku(https://devcenter.heroku.com/articles/s3)的精彩概述文章,该文章引导了一篇由Thoughtbot(Paperclip的开发者)提供的关于Rails应用程序中实现细节的文章({{3} })