[英]Ignore public uploads on commit
我遇到的問題是,每次對代碼進行任何更改時,都會刪除所有用戶上傳的圖像。 我認為這是因為它使服務器上的公共上載與我本地上的內容相匹配。
所以我在/public/uploads/*
.gitignore
添加了/public/uploads/*
。
git rm -r --cached.
git add .
git commit
git push
沒有解決。 還嘗試添加到.gitignore
*/uploads/*
, **/uploads/*
和/uploads/*
。
部署到Heroku時如何防止提交抹掉用戶上傳的內容?
問題不在於Git¹,而在於Heroku。 它的文件系統是短暫的 :只要重新啟動測功機,對文件系統所做的任何更改都會丟失:
每個dyno都有自己的臨時文件系統,其中包含最新部署的代碼的新副本。 在dyno的生命周期中,其正在運行的進程可以將文件系統用作臨時暫存器,但是任何其他dyno中的進程都看不到已寫入的文件,並且在dyno停止或重新啟動時,所有寫入的文件都將被丟棄。 例如,在由於應用程序部署而更換測功機的任何時候都會發生這種情況,並且在正常測功機管理的一部分中大約每天一次。
在部署新版本時以及在其他情況下 (每天至少一次),會發生這種情況。
Heroku的官方建議是將上傳的文件存儲在第三方服務(如Amazon S3)上。
¹盡管可能值得驗證.gitignore
的配置正確,因為這也可能是一個問題。 嘗試運行git check-ignore -v public/uploads/some-file-that-exists
。 您應該看到引用忽略規則的響應,導致該文件被忽略。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.