Gediminas Šukys
Gediminas Šukys

Reputation: 7391

Set public directory outside rails app

Is it possible to make public directory outside of main Rails App directory?

Schema

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

I need use it with several Rails and Non-Rails Applications to manage Uploads

Upvotes: 1

Views: 1326

Answers (2)

lsaffie
lsaffie

Reputation: 1814

Multiple public folders, single rails installation

use public.path

Symlinks may be the best approach in your case I think

Upvotes: 1

lobanovadik
lobanovadik

Reputation: 1088

Two ways I can think of:

First: if you are using nginx, you can configure it to first check your custom dir, and serve files from there if found, otherwise ask rails app for responce. Nginx config would look like this

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;
   }
}

It is using nginx as a reverse proxy. You run thin server on 3000 port (or any other server you like), and nginx turns to it only if it could not find requested file in root directory.

Second: Just create symlinks

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

so /apps/this_dir_wants_to_be_public would be actual directory, and /apps/rails_app/public link to it. Seems absolutelly transparent for rails app and simple

Upvotes: 1

Related Questions