[英]Rails 4.1 not serving font-awesome assets on Heroku
我有一個在Heroku上運行的Rails 4.1應用程序,我看到一個靜態資產問題。 每當我的應用請求任何非svg版本的字體資產(由font-awesome-rails gem提供)時,都不會提供它們。 其他所有資產似乎都可以正常使用。
> curl http://myapp.herokuapp.com/assets/fontawesome-webfont-701cf412b1cf188f7e15450446d7cd04.ttf
## gives 404 response even though the file exists in public/assets on heroku
> curl http://myapp.herokuapp.com/assets/fontawesome-webfont-4835d3d33b92d5c7c8c58149959d075d.svg
## gives 200 response and serves the file
似乎所有這些資產都已成功預編譯,並存儲在public/assets
(下面是來自heroku bash
)。
$ ~/public/assets $ ls -l fontawesome-webfont-*
-rwx------ 1 u31786 31786 38205 2014-05-16 19:57 fontawesome-webfont-0c7d84c1c574b8bae138a7014e781a1c.eot
-rwx------ 1 u31786 31786 80652 2014-05-16 19:57 fontawesome-webfont-103111d81ddabc2cf4abea9d8a922fb8.ttf
-rwx------ 1 u31786 31786 202148 2014-05-16 19:57 fontawesome-webfont-1bc7b8f24d224d2cce2fdff63d829fb8.svg
-rwx------ 1 u31786 31786 253487 2014-07-04 02:17 fontawesome-webfont-434a869d64e7a46581d538486a8af044.svg
-rwx------ 1 u31786 31786 202148 2014-05-16 19:57 fontawesome-webfont-4835d3d33b92d5c7c8c58149959d075d.svg
-rwx------ 1 u31786 31786 44432 2014-05-16 19:57 fontawesome-webfont-4daf533148b5cd2067fa92a25d911a2b.woff
-rwx------ 1 u31786 31786 44432 2014-05-16 19:57 fontawesome-webfont-641588c6e43238bf5012415aa7d8f6c9.woff
-rwx------ 1 u31786 31786 141564 2014-07-04 02:17 fontawesome-webfont-701cf412b1cf188f7e15450446d7cd04.ttf
-rwx------ 1 u31786 31786 83760 2014-07-04 02:17 fontawesome-webfont-8613891d251955c3898dc19ee822a763.woff
-rwx------ 1 u31786 31786 72449 2014-07-04 02:17 fontawesome-webfont-97abc2bd68ee5cc83cf9f5386cfc7912.eot
-rwx------ 1 u31786 31786 38205 2014-05-16 19:57 fontawesome-webfont-b921a0d9014189177e286b16478a6680.eot
-rwx------ 1 u31786 31786 80652 2014-05-16 19:57 fontawesome-webfont-e21e874c038a38923c7e064e8606b135.ttf
似乎我不需要按照此處的建議將字體文件類型添加到config.assets.precompile
(我嘗試過,但沒有幫助)。 由於該資產已放入public/assets
,因此似乎已成功進行了預編譯,但是Rails無法提供該資源。
具有正確權限的資產如何可能存在於public/assets
,而Heroku上的Rails無法通過http獲得public/assets
? 是否有其他會影響此的Rails配置設置?
謝謝。
原來,我的應用程序有一個版本的rack-zippy Middleware gem,該版本導致這些文件類型無法提供。 (與此相同)。 升級寶石可以解決該問題。
只需將字體添加到資產編輯中
配置/ production.rb
Rails.application.configure do
. . .
config.assets.precompile += %w(
*.svg *.eot *.woff *.ttf *.png *.jpg *.jpeg *.gif
)
. . .
end
在嘗試了多種解決方案之后,我能夠按照font-awesome.css中的rails guide的建議,使用資產助手來解決此問題:
@font-face {
font-family: 'FontAwesome';
src: url('<%= asset_path("fontawesome-webfont.eot")%>?v=4.2.0');
src: url('<%= asset_path("fontawesome-webfont.eot")%>?#iefix&v=4.2.0') format('embedded-opentype'),
url('<%= asset_path("fontawesome-webfont.woff")%>?v=4.2.0') format('woff'),
url('<%= asset_path("fontawesome-webfont.ttf")%>?v=4.2.0') format('truetype'),
url('<%= asset_path("fontawesome-webfont.svg")%>?v=4.2.0#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
記住要重命名文件以包括.ERB擴展名:font-awesome.css.erb
資產管道會自動評估ERB。 這意味着,如果將erb擴展名添加到CSS資產(例如application.css.erb),則CSS規則中將提供諸如asset_path之類的幫助器:
.class {background-image:url(<%= asset_path'image.png'%>)}這會將路徑寫入到所引用的特定資產。 在此示例中,在資產加載路徑之一(例如app / assets / images / image.png)中具有圖像將是有意義的,此處將對其進行引用。 如果此圖像已在公共/資產中作為指紋文件可用,則將引用該路徑。
如果要使用數據URI(將圖像數據直接嵌入CSS文件中的方法),則可以使用asset_data_uri幫助器。
logo { background: url(<%= asset_data_uri 'logo.png' %>) }
這logo { background: url(<%= asset_data_uri 'logo.png' %>) }
正確格式的數據URI插入CSS源。
請注意,結束標記不能為-%>樣式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.