因此,我開始調查Rails3中的資產管道,並且我有一個理想的用例,它有點偏離了路徑......所以我正在尋找一個配方。Rails3:如何使用資產管道來構建靜態資產
我經常遇到的WEBrick本地發展,然後運行 客運+阿帕奇應用程序的部署實例。
該應用配置有suburi路徑,例如, http:// server/approot/...
使Webrick路徑像部署實例一樣工作,我將
map '/approot' do run app
添加到config.ru
。現在的WEBrick也是在http://本地:3000 /爲approot/...
的混亂
鑑於此設置中,我試圖用rake assets:precompile
,並已具有之間有很多的配置問題當地部署 - 丟失的文件,不正確的路徑,在Firebug 404等。下面是我試過的解決方案略知一二:
config.assets.initialize_on_precompile = false
到application.rb
防止嘗試初始化應用爲production
,(我們有幾個已部署的環境,並在預編譯資產時稱它們爲不同的名稱,例如。config.assets.precompile += %w(*.js *.css)
到application.rb
包含諸如jquery.js和ujs和rails.js之類的東西,這些東西都沒有。config.assets.prefix = "/approot/assets"
糾正了一個問題,在地圖上方(config.ru)並不適用於資產,那麼資產必須預編譯爲./public/approot/assets
,但我不知道這隻能在本地,也就是說,如果我部署,我的資產路徑是http:// server/approot/approot/(js|css|...)
?
當預編譯的資產,耙任務切換針對Env production
,但隨後從Rails3中DOC不清楚鏈輪是否繼續本地編譯的飛行,並利用這些動態資產,或是否將服務於靜預編譯資產呢?
- 我試圖把
config.serve_static_assets = true
在environments/development.rb
,但我不知道這是如何工作與config.assets.compress = false
和config.assets.debug = true
。雖然我看到一篇帖子說「解決了問題」(原文如此),但將assets.debug設置爲false似乎隱藏了GET請求的webrick日誌。
質量要求的食譜
所以我想一個食譜,執行以下操作:
資產堅持正確的路徑擔任
http://server/approot/assets/...
無論是在客運運行或webrick(即部署或本地)。如果這是不可能的,那麼我可以切換我的本地開發環境以使用Passenger + Apache,這不是什麼大不了的事情,但我只想知道它是否可能。原資產
/app/assets
存在像正常Rails3中,但是當我預編譯它們,他們的工作完全一樣的方式部署ENVS使資源文件的引用不破(即現在,有很多的裁判找/assets/image/...
當路徑明確設置爲/approot/assets/image...
。鏈輪不能(是否有有關部署根VS一個suburi,如
http:// server/assets/...
與http:// server/approot/assets/...
假設它是從Rails3中DOC不清)在部署環境中使用(我們的限制,對不起)。這意味着鐵路s3應用程序必須看起來像一個靜態資產應用程序。我知道這是預編譯資產應該做的事情,但路徑問題正在阻止我像廣告中那樣工作。
TL; DR - 我覺得我嘗試了很多不同的東西,如果我只知道他們的正確組合可能的工作。
參考
- http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets
- http://blog.55minutes.com/2012/02/untangling-the-rails-asset-pipeline-part-2-production/
- http://blog.55minutes.com/2012/02/untangling-the-rails-asset-pipeline-part-3-configuration/
- https://github.com/rails/rails/pull/3946
如果您使用Sprockets提前編譯資源,則需要Sprockets稍後再讀取清單;它全部流過[Sprockets :: Helpers :: RailsHelper](https://github.com/rails/rails/blob/3-2-stable/actionpack/lib/sprockets/helpers/rails_helper.rb)。如果你不能在生產中使用Sprockets(「我們的限制,對不起」),你也應該在開發過程中使用它。 – willglynn
是的,我得到的印象越多,我對它的閱讀和它們如何融合在一起。謝謝!我們在設置應用程序方面缺乏靈活性 - 另一個團隊在部署的envs中管理Apache和Passenger,但在rails應用程序中使用鏈輪可能沒有問題。 –