2017-05-08 97 views
-1

這個問題是在參考貼在下面的鏈接中的解決方案:如何在Rails應用程序中配置虛擬文件夾?

Paperclip, set path outside of rails root folder

提供的答案中提到創建一個虛擬文件夾,但有關於如何做到這一點沒有任何解釋。我有一個通過Dokku的Rails應用程序,並且我在根目錄的一個文件夾中有一個安裝的數字海洋塊存儲。 「/ MNT /體積sgp1-01 /」。

所以問題是如何使指向這是Rails應用程序之外的特定目錄這個「虛擬文件夾」?

此外,如何配置一個自定義的GET,這將使內的所有文件通過xyz.com/mnt/volume-sgp1-01/...etc訪問。

更新: 我指的是一個「虛擬文件夾」,即一個文件夾,它不是一個真正的文件夾,但在Rails應用程序中被識別爲一個指向Rails根文件夾之外的現有文件夾。

至於文件夾的目的,它是在永久存儲服務器中提供一個不受Rails根文件夾中任何內容影響的位置,因爲每當我重新部署rails時,Rails文件夾中的文件都被替換。

[注:我不能使用Amazon AWS作爲中國往往阻礙了他們的服務器。因此,我正在使用Digital Ocean Block Storage作爲我的解決方案。]

+0

你試圖達到什麼目的,爲什麼你需要該文件夾?我認爲答案中的名稱*虛擬*文件夾是誤導性的。文件夾沒有什麼特別之處,它是一個普通的簡單文件夾(在這種情況下應用程序文件夾之外)。只需在服務器上創建一個普通的文件夾。 – spickermann

+0

我指的是一個「虛擬文件夾」,即一個文件夾,它不是一個真正的文件夾,但在Rails應用程序中被識別爲一個文件夾,指向Rails根文件夾之外的現有文件夾。它在所提供的鏈接中給出的解決方案中引用,並且從您的評論中,似乎很清楚您沒有點擊鏈接來查看我在說什麼。 – user7978648

回答

0

我沒有使用回形針寶石,但我用了carrierwave寶石和我遇到一個需要持久化存儲,以及問題。所以我想也許我的解決方案也可以應用到你的。我還假設你正在使用數字海洋液滴,但我認爲它也適用於任何服務器。正如Jose Diaz-Gonzalez所說,你需要使用dokku的持久存儲插件。

首先,你必須選擇你想要將文件存儲在一個文件夾。Dokku文件建議的文件夾的/ var/lib中/ dokku /數據/存儲/。所以你可以通過SSH進入你的Droplet,使用mkdir創建一個文件夾。然後運行chown以授予dokku用戶寫入該文件夾的權限。該文件夾的路徑應位於命令的左側。

cd /var/lib/dokku/data/storage 
mkdir paperclip_storage 
chown -R 32767:32767 paperclip_storage 

當你部署你的Rails應用dokku,即dokku用途紅寶石構建包將放置在/ app文件夾您的應用程序。因此,讓我說我的寶石CarrierWave,文件上傳位置是上傳/照片/,在我的dokku容器上傳的完整路徑將是/ app/public/uploads/photos。 此路徑應位於命令的右側。

!!更換/應用/公/紙/夾/用正確的文件夾上傳到您的回形針上傳。!

dokku storage:mount album /var/lib/dokku/data/storage/paperclip_storage:/app/public/paper/clip/upload 

之後,你需要重新構建應用程序

dokku ps:rebuild app-name 

現在你可以ssh到你的上傳文件夾,在/ var/lib中/ dokku /數據/存儲/ paperclip_storage並嘗試上傳使用文件你的回形針寶石。如果鏈接成功,則應在使用ls命令進行檢查時立即顯示這些文件。

cd /var/lib/dokku/data/storage/paperclip_storage 
ls 
相關問題