0

我遇到了使用自定義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 

所以在這一點上我我正在用盡想法,可以使用任何建議或想法。非常感謝你!

+1

當你做一個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

+0

感謝您的快速回復@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

+0

另外,我相信資產:precompile正在製作public/r/assets目錄結構,因爲我的config.assets.prefix =「/ r/assets」,這是必需的,因爲我使用的機架過濾器是「 r/*「 – 2013-03-20 15:40:22

回答

0

問題在於public/assets目錄需要位於war目錄的根目錄中,以便tomcat能夠找到資產。所以,現在的目錄結構看起來

像這樣:

戰爭
- 資產
- META-INF
- WEB-INF

取而代之的是:

戰爭
- META-INF
- WEB-INF
- - public
- - - 資產