2017-05-08 62 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 
相关问题