提交时忽略公共上传

时间:2018-10-26 23:28:53

标签: ruby-on-rails git heroku

我遇到的问题是,每次对代码进行任何更改时,都会删除所有用户上传的图像。我认为这是因为它使服务器上的公共上载与我本地上的内容相匹配。

因此我将/public/uploads/*添加到了.gitignore 然后;

git rm -r --cached.
git add .
git commit
git push

没有解决。还尝试将其添加到.gitignore */uploads/***/uploads/*/uploads/*中。

在部署到Heroku时,如何防止提交内容抹去用户上传的内容?

1 个答案:

答案 0 :(得分:0)

问题不在于Git¹,而在于Heroku。其filesystem is ephemeral:重新启动测功机后,对文件系统所做的任何更改都将丢失:

  

每个dyno都有自己的临时文件系统,其中包含最新部署的代码的新副本。在dyno的生命周期中,其运行的进程可以将文件系统用作临时暂存器,但是任何其他dyno的进程都看不到已写入的文件,并且在dyno停止或重新启动时,所有写入的文件都会被丢弃。例如,在由于应用程序部署而更换测功机的任何时候都会发生这种情况,并且在正常测功机管理的一部分中大约每天一次。

每天至少部署一次新版本以及in other situations时会发生这种情况。

official recommendation from Heroku用于将上传的文件存储在Amazon S3等第三方服务上。


¹尽管可能值得验证您的.gitignore的配置正确,因为这也可能是一个问题。尝试运行git check-ignore -v public/uploads/some-file-that-exists。您应该看到引用忽略规则的响应,该规则导致该文件被忽略。