6

Rails 4 アプリに Fontawesome を含めようとしていますが、アセットがアセット パイプラインに含まれていません。ただし、フォントは本番環境でうまく機能しておらず、その理由はわかりません。

ファイル構造編成

/assets/components Fontawesome が次の場所に表示されるように、すべてのアセットは次の場所に保存され/assets/components/font-awesomeます (Bower を使用しているため、これらは別のディレクトリにあります)。

CSS マニフェスト ファイル:

# application.css.scss
/* ...
*= require bootstrap/dist/css/bootstrap
*= require font-awesome/css/font-awesome
*= require_self
*= require_tree .
*/

アセット パイプラインは、フォントをプリコンパイルするように設定されています

# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
config.assets.paths << Rails.root.join('vendor', 'assets', 'components')

# Adding Webfonts to the Asset Pipeline
config.assets.precompile << Proc.new { |path|
  if path =~ /\.(eot|svg|ttf|woff|otf)\z/
    true
  end
}

この質問に従ってフォントがすべてプリコンパイルされるように、プリコンパイル手順を追加しました

Heroku 12 Factor gem が含まれています

#gemfile
group :production do
  gem "rails_12factor"
end

だから問題は何ですか?

Heroku にプッシュすると、アプリケーションがファイルを要求しているが、ロードしていないことが示されます。

ここに画像の説明を入力

ここに画像の説明を入力

ログを見ると、ルーティングの問題のようです-フォントが提供されることを期待して/assets/fontsいましたが、どうやら調べているようです/fonts

   app[web.1]: Started GET "/fonts/fontawesome-webfont.ttf?v=4.0.1" for 86.161.231.181 at 2013-10-29 15:53:01 +0000
   app[web.1]: Started GET "/fonts/fontawesome-webfont.ttf?v=4.0.1" for 86.161.231.181 at 2013-10-29 15:53:01 +0000
   app[web.1]: 
   app[web.1]: ActionController::RoutingError (No route matches [GET] "/fonts/fontawesome-webfont.ttf"):

アセットが提供されない理由

私はこれらすべてに少し混乱しています。これらのフォントが提供されていないのはなぜですか?

4

1 に答える 1