我在生產:缺少的東西,編譯成錯誤文件(JavaScript的「/ admin」被編譯成前端代碼等等)時遇到資產問題。大部分資產來自引擎。我想調試和優化這個。使資產管道像發展中的生產一樣
對於這一點,我需要預編譯,發球和失敗對我開發環境就像它是在生產完成。
我增加了一些行我config/development.rb
:
config.serve_static_assets = true
config.assets.precompile += %w(store/all.js store/all.css admin/all.js admin/all.css) # @TODO: clean up, and optimize.
config.assets.compile = false
運行這個與rake RAILS_GROUPS=assets RAILS_ENV=development assets:precompile
給了我所有的資產和public/
的manifest.yml
。
但隨後的服務器出現故障:
Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Spree/home#index
Showing /xxxx/app/views/spree/shared/_head.html.erb where line #13 raised:
favicon.ico isn't precompiled
的favicon.ico不預編譯。但它是!它在那裏,在公共目錄中,manifest.yml
,我可以通過瀏覽器(或wget)獲取它:http://localhost:3000/assets/favicon.ico。
備註 Favicon僅僅是第一個被稱爲的資產。如果我刪除了favicon,問題僅僅表現爲下一個資源,即「all.js」,或者當刪除時,「all.css」等等。我可以剝離它直到「footer_bg.png」,然後它會在那裏失敗。再說一遍:問題並不在於圖標,但事實上開發環境根本沒有看到預編譯的資產。
還需要什麼才能獲得開發資產流水線類似於生產?
編輯:更明確的解釋,favicon不是問題,只是一個症狀。
什麼是您的生產環境堆棧?單服務器/多服務器,Apache/Nginx,Heroku?您是否正在使用capistrano並使用capistrano配方進行部署?你在生產中使用config.serve_static_assets = true嗎?您是否嘗試過通過apache/nginx處理serve_static_assets而不是Rails推薦的Rails? – John 2012-05-17 04:01:40
我的生產堆棧幾乎是一個黑盒子乘客。這是一個site5虛擬主機。我沒有使用capistrano進行部署,而是使用git-push && post-commit hook(又名git-deploy)。 'config.serve_static_assets = true'被禁用。是的,我嘗試過服務於Apache的資產。它解決了一點。由於我在這裏嘗試解決的問題是我的**開發**環境不能像生產一樣提供我的資產。 – berkes 2012-05-17 09:26:33