是否有可能在主Rails應用程序目錄之外創建公共目錄?在Rails應用程序目錄之外設置公共目錄
架構
/apps/app1
/apps/app2
/apps/this_dir_wants_to_be_public
我需要使用它與幾個Rails和非Rails應用程序來管理上傳
是否有可能在主Rails應用程序目錄之外創建公共目錄?在Rails應用程序目錄之外設置公共目錄
架構
/apps/app1
/apps/app2
/apps/this_dir_wants_to_be_public
我需要使用它與幾個Rails和非Rails應用程序來管理上傳
種兩種方式我能想到的:
首先:如果您使用nginx的,你可以配置它來先檢查您的自定義目錄,並從那裏如果找到提供文件,否則請Rails應用程序的性反應。 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
所以/應用/ this_dir_wants_to_be_public將是實際的目錄和/應用/ rails_app /公共鏈接。似乎絕對透明的rails應用程序和簡單
nginx解決方案對於服務資產可以正常工作,但它將不會幫助解決內部導軌問題:路徑對於image_tag,javascript_tag等是錯誤的。符號鏈接是要走的路。 –
只需創建符號鏈接文件到公用文件夾 – itsnikolay
同意,符號鏈接。在你的rails文件夾裏,在一個命令窗口中:'ln -s/path/to/real/folder public'(你需要先刪除現有的公用文件夾) –