2013-10-13 13 views
7

プロダクションでダイジェストなしで提供されているフォントアセットに問題があります。できるだけ早く私は資産をすくいそうであるように :プリコンパイル私が手:Ruby on Rails 4でダイジェストのないフォントアセット

5futurebit-webfont-c133dbefd9e1ca208741ed53c7396062.eot 

私は資産-urlには、資産パス、フォントURLとフォント・パスとSCSSのfont-顔でそれをリンクしようとしているが、すべてのましたそれらのパスを出力して終了:今のところ

/assets/5futurebit-webfont.eot 

を私はストレート/公共/資産にアプリ/資産/フォント/から資産をコピーするよ/それはそれを行うための方法だようにそれは感じていません。

+1

私はこの質問を非愚かダイジェスト・資産の宝石のために、関連するhttp://stackoverflow.com/questions/10905905/using-fonts-with-rails-asset-pipeline –

答えて

0

あなたのようなあなたのフォントURL宣言でフォントの拡張子名で正確なファイル名があることを確認してください:

正しい:

@font-face{ 
    font-family: 'Sawasdee'; 
    src: font-url('Sawasdee.ttf') format('truetype'); 
} 

間違っ:

@font-face{ 
    font-family: 'Sewasdee'; 
    src: font-url('Sewasdee') format('truetype'); 
} 

マイフォントフォルダを:

fonts 
|_ Sewasdee.ttf 
|_ Otherfont.ttf 
2

私は同様の問題を捜し求めており、現在は愚かなダイジェスト資産の宝石を使用しています:https://github.com/alexspeller/non-stupid-digest-assets

詳細はこちらをご覧ください。 Correct use of non-stupid-digest-assets gem

クリスが提供するリンク(具体的には、https://stackoverflow.com/a/17367264/291640)は、宝石そのものを持たない宝石と同じように実現しているようです。私はそれをさらに調べる必要があることを知っている。

+0

+1ていると思われます。 Railsにはこのようなオプションが必要です。 –

0

ここで私たちの解決策は、Sprocetsの機能に部分的に基づいています。それはRails4と連携しています。それは、プリコンパイルが行われた後に、config.assets.precompileにリストされたすべてのアセットの非同一バージョンを自動的に生成します。

# lib/tasks/assets_nondigest.rake 
require 'fileutils' 

namespace "assets:precompile" do 
    desc "Create nondigest versions of defined assets" 
    task :nondigest => :environment do 
    sprocket_task = Sprockets::Rails::Task.new ::Rails.application 
    assets = ::Rails.application.config.assets.precompile 

    paths = sprocket_task.index.each_logical_path(assets).to_a + 
     assets.select { |asset| Pathname.new(asset).absolute? if asset.is_a?(String)} 

    paths.each do |path| 
     if asset = sprocket_task.index.find_asset(path) 
     copy_target = File.join(sprocket_task.output, asset.digest_path) 
     target = File.join(sprocket_task.output, asset.logical_path) 

     sprocket_task.logger.info "Writing #{target}" 
     asset.write_to target 
     asset.write_to "#{target}.gz" if asset.is_a?(Sprockets::BundledAsset) 
     end 
    end 
    end 
end 

Rake::Task['assets:precompile'].enhance do 
    Rake::Task['assets:precompile:nondigest'].invoke 
end 
関連する問題