5

Railsアプリにフォントを追加しようとしていますが、これは私が行ったことです:

追加されたフォント:

-app
--assets
---fonts

SCSS:

@font-face {
  font-family: LigatureSymbols;

  src: font-url('LigatureSymbols211.eot');
  src: local('LigatureSymbols'),
       font-url('LigatureSymbols211.eot?#iefix') format('embedded-opentype'),
       font-url('LigatureSymbols211.woff') format('woff'),
       font-url('LigatureSymbols211.ttf') format('truetype'),
       font-url('LigatureSymbols211.svg#LigatureSymbols') format('svg');

  font-weight: normal;
  font-style: normal;
}

production.rb:

config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.precompile += %w( .svg .eot .woff .ttf )

しかし、Heroku 本番サーバーにプッシュすると、次のようになります。

-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       I, [2013-05-06T06:21:07.804043 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/LigatureSymbols211-c5b7db18fa0fcd910e92fee751776047.eot
       I, [2013-05-06T06:21:07.809822 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/LigatureSymbols211-09ff8be41a6bee98c834e9a278bb8b28.otf
       I, [2013-05-06T06:21:07.812685 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/LigatureSymbols211-1f682b1be252dbf6182d606a185b603f.svg
       I, [2013-05-06T06:21:07.819262 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/LigatureSymbols211-9e88765b872185b22e519da056cba9f0.ttf
       I, [2013-05-06T06:21:07.829518 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/LigatureSymbols211-a2d90ca6deff46bfcf9cade63d4902ce.woff
       I, [2013-05-06T06:21:07.838351 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/rails-5f9b3f343d9831cbf50b9bc980faf39b.png
       I, [2013-05-06T06:21:17.072501 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/application-6af5b81b9fcc820f1d43b4135f00317e.js
       rake aborted!
       undefined method `[]' for nil:NilClass
       (in /tmp/build_2snusxy9gm4d7/app/assets/stylesheets/application.css)

requiredに行を追加しようとしましたapplication.cssが、それも機能しません。

編集:

localhost:5000/assets/LigatureSymbols-2.11.eotサーバーを実行しているときに開発マシンにアクセスできます。これが何が問題なのかを絞り込むのに役立つかどうかはわかりません

編集2:

コードはコメントアウトされた SCSS フォントで動作しますが、構文エラーはありますか?

編集3:

これは、トレース スタックの一番上にあります。

.../sprockets-2.9.2/lib/sprockets/sass_functions.rb:63:in `sprockets_context'
.../sprockets-2.9.2/lib/sprockets/sass_functions.rb:42:in `font_url'

font-url私の通話に何か問題がありますか?

編集4:

フォント ファイル名からダッシュを削除し、scss を反映するように変更しましたが、同じエラーが引き続き発生します

編集5:

ローカル マシンで生成された CSS:

@font-face {
  font-family: LigatureSymbols;
  src: font-url("LigatureSymbols211.eot");
  src: local("LigatureSymbols"), font-url("LigatureSymbols211.eot?#iefix") format("embedded-opentype"), font-url("LigatureSymbols211.woff") format("woff"), font-url("LigatureSymbols211.ttf") format("truetype"), font-url("LigatureSymbols211.svg#LigatureSymbols") format("svg");
  font-weight: normal;
  font-style: normal; }
4

4 に答える 4

4

わかった!最も奇妙なこと... SASSのバグかもしれません。

home.css.scssで必要なファイルにコードを直接入れるapplication.cssと、エラーが発生します。

さらに、フォント SCSS を別のファイル ( font.scss)に配置すると@import "font"、エラーが発生します。

font.scssファイルが必要な場合にのみapplication.css、アセット パイプラインがパスします。

font-url(...)vs asset-url(...,font)vsを使用しても問題ありませんでしurl(asset-path(...,font))=requireapplication.css

于 2013-05-08T05:28:32.510 に答える
2

ファイル拡張子を .css から .scss に変更するのを忘れたときに、まったく同じエラーが発生しました。それは私のためにそれを修正しました。

于 2014-04-03T20:47:25.923 に答える
2

ハイフンを削除します。アセット パイプラインはハイフンを使用してアセットのフィンガープリントを作成しますが、フォント パスにハイフンが含まれていると問題が発生します。

于 2013-05-06T06:11:46.137 に答える
0

これをあなたのconfig/application.rb

config.assets.initialize_on_precompile = false

私はHerokuで同様の問題を抱えていましたが、これは時々役に立ちました。それは試みに値します。それが役に立ったかどうか教えてください。

于 2013-05-06T05:32:07.983 に答える