2014-10-19 62 views
0

這令人難以置信的令人沮喪。資產管道和供應商資產。你如何將它們添加到Rails 4中進行預編譯?

我已經添加了一些CSS文件到我的供應商資產,我似乎無法讓他們得到預編譯,或者至少是由我的生產服務器找到的。

這些文件的東西被發現是這樣的:

/vendor/assets/stylesheets/cssfw/style.css 
/vendor/assets/stylesheets/cssfw/app.css 
/vendor/assets/stylesheets/cssfw/plugins.css 
/vendor/assets/stylesheets/cssfw/custom.css 

他們正裝這樣對我application.css

*= require cssfw/style.css 

而且裏面的style.css

@import url(app.css); 
@import url(plugins.css); 
@import url(custom.css); 

這在我的開發環境(很明顯)中工作正常,但所有這4個CSS文件不能在asse中的任何位置找到在生產中。

我很明顯想包括一些東西,但是什麼?

如果我使用production.rb是這樣的:

config.assets.precompile += %w(*.css) 

我得到的錯誤的攻勢,因爲那樣它通過每一個樣式表我在/供應商/目錄。如果我嘗試具體(比如指定style.css),則相同的初始錯誤仍然存​​在,並且無法找到樣式。

他們應該如何準確地包括在內?最好是,我不想包含所有供應商資產文件,因爲實際上我只使用了少數幾個文件夾,但該文件夾包含大約20個左右,我還沒有配置。

我在Apache Phusion Passenger上使用Rails 4.1.6和Ruby 2.1.0。

回答

0

你應該production.rb設置:

config.assets.compile = true 

,並在命令行中使用:

rake assets:precompile 

啓動它的服務器之前。

+0

他們已經這樣設置。是的,我已經運行了rake資源:預編譯。 – user3209270 2014-10-19 09:23:19

+0

你爲什麼將它們添加到「供應商」?將其添加到應用程序。 – BallsOfSteel 2014-10-19 09:24:50

+0

因爲它們必然會被開發者改變,而不是由我改變。這不僅僅是一個特定的CSS,還有很多。它是框架的一部分。 – user3209270 2014-10-19 09:26:22

1

訣竅在於將@import更改爲*= require,導致@import不在資產管道之後。我仍然不清楚爲什麼會發生這種情況,但是我在style.css中改變了這一點,畢竟這個時間實際上是一直加載的。

在我application.css:

*= require cssfw/style # /vendor/cssfw/style.css 

而在style.css文件的第一部分:

/* 
*= require cssfw/app   # /vendor/cssfw/app.css 
*= require cssfw/plugins  # /vendor/cssfw/plugins.css 
*= require cssfw/custom  # /vendor/cssfw/custom.css 

*= require cssfw/plugins/animate   # /vendor/cssfw/plugins/animate.css 
*= require cssfw/plugins/box-shadows  # /vendor/cssfw/plugins/box-shadows.css 
*/ 

這將使Rails的尋找他們在適當的地方供應商管道,雖然我被迫實際上包括整個路徑,減去cssfw。如果我放棄它,它在開發中運行良好,但生產無法找到它們。

如果您想知道,我沒有將其他任何內容移動到我的application.rb或production.rb中。我認爲這可能有一個更優雅的解決方案,但現在可以使用。