在rails app外设置公共目录

时间:2014-02-21 11:02:55

标签: ruby-on-rails

是否可以在主Rails App目录之外创建公​​共目录?

模式

/apps/app1
/apps/app2
/apps/this_dir_wants_to_be_public

我需要将它与几个Rails和非Rails应用程序一起使用来管理上传

2 个答案:

答案 0 :(得分:1)

Multiple public folders, single rails installation

使用public.path

我认为符号链接可能是您的最佳方法

答案 1 :(得分:1)

我能想到的两种方式:

首先:如果您使用的是nginx,您可以将其配置为首先检查您的自定义目录,如果找到则从那里提供文件,否则请求rails app进行响应。 Nginx配置看起来像这样

upstream backend {
   server localhost:3000;
}
server {
   listen       80;
   server_name  whatever.com;
   root /your_static_path;
   try_files $uri $uri/index.html @backend;

   location @backend {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://backend;
   }
}

它使用nginx作为反向代理。您在3000端口(或任何其他您喜欢的服务器)上运行瘦服务器,只有在根目录中找不到请求的文件时,nginx才会转向它。

第二:只需创建符号链接

ln -s /apps/this_dir_wants_to_be_public /apps/rails_app/public

so / apps / this_dir_wants_to_be_public是实际目录,/ apps / rails_app / public链接到它。对于rails app和简单的

来说,似乎绝对透明