導軌4.1.1使用Apache /乘客配置爲運行在一個子目錄中rails應用程序「/ MyApp的」,而不是網站的根生產安裝。導軌4的應用程序中的子目錄 - 預編譯資產指向根,而不是子目錄
在應用做工精細的所有鏈接,但在生產中引用的SCSS文件的資產,例如
background-image: image-url('logo.png');
被編譯到:的
background-image: url("/assets/logo-<hash>.png");
代替:
background-image: url("/myapp/assets/logo-<hash>.png");
預編譯的資產,當我試圖做這樣的事情:
RAILS_ENV=production RAILS_RELATIVE_URL_ROOT=/myapp rake assets:precompile
但沒有任何效果。
我也試過在config/environments/production.env
文件中設置config.relative_url_root
,沒有運氣。
Rails guides說要設置config.action_controller.relative_url_root
,但這會導致缺少方法錯誤。
我最終放棄了和嵌入CSS文件的圖像通過:
background-image: asset-data-url('logo.png');
其作品,但只有通過完全避免子目錄問題。
我知道Rails使你付出不遵守約定,但有一個子目錄中的應用程序是不完全古怪。
我似乎已經在這個問題上的各種帖子,但很難得到一個直接的答案。對於Rails的早期版本,似乎已經修復了幾次,但是不清楚這些修復是否進入了標準的Rails發行版。
我道歉;直到現在我還沒有能夠測試這個。修改config/application.rb和config.ru並運行'rake assets:precompile'後,重新啓動服務器後,每次請求都會得到** 404 Not Found **(並且沒有任何內容會寫入生產日誌。是很多移動部件(SSL,Apache/mod_passenger),所以也許它與Rails本身無關。但是,恢復更改會使應用程序再次工作。 – EK0
哇......不知道爲什麼這不在文檔中http://guides.rubyonrails.org/configuring.html#deploy-to-a-subdirectory-relative-url-root ...以防其他人想知道,你可以通過使用'RAILS_RELATIVE_URL_ROOT刪除config.relative_url_root 'env var - 但你仍然需要做cmonkeys步驟2) –