我遇到了使用自定義RackFilter設置並能夠正確定位或利用rake的問題:生產中的預編譯功能。 我的環境如下:使用RackFilter和資產的滑軌
jruby 1.7.3
Rails 3.2.12
的,我使用的機架過濾器映射如下:
<filter-mapping>
<filter-name>RackFilter</filter-name>
<url-pattern>/r/*</url-pattern>
</filter-mapping>
要利用資產管道,不使用預編譯的發展,我添加以下內容application.rb
config.assets.prefix = "/r/assets"
所有這些在開發模式下工作正常。當我嘗試在生產模式下運行應用程序時,問題就開始了。當我做一個資產:預編譯我的資產目錄結構是這樣的:
/public/r/assets
,當我嘗試和運行應用程序,我得到以下錯誤:
ActionView::Template::Error (application.css isn't precompiled):
指向我的方向應用程序不能正確定位manifest.yml文件,所以我添加下面我production.rb:
config.assets.manifest = Rails.root.join( 「公共/ R /資產」)
,然後我得到以下錯誤:
[WARN] 404 - GET /r/assets/application-3b09aaf17ec25843ede11b1160ca46ab.css
我試圖改變我的production.rb包括:
config.assets.prefix = "public/r/assets"
但仍獲得
[WARN] 404 - GET /public/r/assets/application-3b09aaf17ec25843ede11b1160ca46ab.css
所以在這一點上我我正在用盡想法,可以使用任何建議或想法。非常感謝你!
當你做一個bundle exec rake assets:precompile時,它不應該在另一個目錄中創建一個目錄。我相信你應該在你的公共目錄中有'public/assets'。你也嘗試過'rake資產:預編譯RAILS_ENV = production'。另外可以肯定的是,您的production.rb中的以下設置爲'true' - 'config.assets.compile = true'? – David 2013-03-20 15:03:54
感謝您的快速回復@David。我將我的資產文件夾移至公共/資產而不是公共/資產。我也在我的production.rb中更改了配置,以使用config.assets.compile = true,但是,我並不想首先更改此設置,因爲從我讀過的內容來看,這確實會降低性能。我現在得到一個錯誤:ActionView :: Template :: Error(File to import not found or unreadable:foundation/foundation-global。因此我正在盡最大努力通過這個來確定你的解決方案是否能夠工作。謝謝! – 2013-03-20 15:32:51
另外,我相信資產:precompile正在製作public/r/assets目錄結構,因爲我的config.assets.prefix =「/ r/assets」,這是必需的,因爲我使用的機架過濾器是「 r/*「 – 2013-03-20 15:40:22