2013-10-13 17 views
7

Tôi gặp sự cố với nội dung phông chữ của mình đang được phân phát mà không cần thông báo trong quá trình sản xuất. Ngay sau khi tôi làm cào tài sản: precompile tôi nhận được:Nội dung phông chữ không có thông báo trong Ruby on Rails 4

5futurebit-webfont-c133dbefd9e1ca208741ed53c7396062.eot 

tôi đã cố gắng liên kết nó với font-face trong SCSS với tài sản url, tài sản con đường, font-url và font-đường nhưng tất cả trong số họ kết thúc xuất ra đường dẫn:

/assets/5futurebit-webfont.eot 

để bây giờ tôi sao chép tài sản từ/app/tài sản/fonts thẳng đến/public/tài sản/nhưng nó không cảm thấy như đó là cách để làm điều đó.

+1

Tôi tin rằng câu hỏi này có thể liên quan http://stackoverflow.com/questions/10905905/using-fonts-with-rails-asset-pipeline –

Trả lời

0

Đảm bảo bạn có chính xác tên tập tin với tên gia hạn của phông chữ trong tờ khai font-url của bạn như: thư mục

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

My phông chữ:

Đúng:

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

Wrong :

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

Tôi đã xem xét vấn đề tương tự và hiện đang sử dụng đá quý không phải là ngu ngốc-digest-asset: https://github.com/alexspeller/non-stupid-digest-assets

Để biết thêm thông tin về cách bạn có thể sử dụng, hãy xem tại đây. Correct use of non-stupid-digest-assets gem

Hiện tại, liên kết được cung cấp bởi Chris (cụ thể, https://stackoverflow.com/a/17367264/291640) có vẻ như nó có thể hoàn thành giống như đá quý không có đá quý. Tôi biết tôi cần phải nhìn sâu hơn.

+0

1 cho người không ngu ngốc-tiêu hóa-tài sản đá quý. Rails nên có tùy chọn như vậy. –

0

Đây là giải pháp của chúng tôi, dựa trên những gì Sprocets làm. Nó đang làm việc với Rails4. Nó tự động tạo ra một phiên bản nondigest cho tất cả các tài sản, được liệt kê trong config.assets.precompile, sau khi biên dịch trước đã được thực hiện.

# 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 
Các vấn đề liên quan