2013-05-06 4 views
5

Я пытаюсь добавить шрифт в мое приложение Rails это то, что я сделал:трубопровода активов Heroku 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, но это не будет работать.

EDIT:

я могу получить доступ к localhost:5000/assets/LigatureSymbols-2.11.eot на моем Dev машине при запуске сервера. Не уверен, если это может помочь сузить, что происходит не так

EDIT 2:

Код работает со шрифтом SCSS закомментированного, есть ошибка синтаксиса?

EDIT 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 звонки?

EDIT 4:

Удалены черточки от шрифта имен файлов и изменил СКС, чтобы отразить, но ту же ошибку сохраняется

EDIT 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

Я нашел это! Самое странное ... может быть ошибкой в ​​SASS.

Если я поместил код непосредственно в файл home.css.scss, который был необходим в моем application.css, возникла бы ошибка.

Кроме того, если я поместил шрифт SCSS в отдельный файл (font.scss) и @import "font", это также вызовет ошибку.

Только, если бы я потребовал, чтобы файл font.scss в моем application.css пропустил бы пропускную способность объекта.

Это не имеет значения, если я использовал font-url(...) против asset-url(...,font) против url(asset-path(...,font)) все они работают, когда шрифт был включен через =require в application.css

+0

Я добавил не очень-хорошо полученный ответ на соответствующую проблему здесь : http://stackoverflow.com/a/36539357/1965639 Изменив шрифт.scss на font.css и введя его по-другому, я решил проблему. @ Майкл Джонстон указал мне в правильном направлении. – jjk

0

Добавить это в ваш config/application.rb

config.assets.initialize_on_precompile = false 

У меня были схожие проблемы с Heroku, и это помогало иногда. Стоит попробовать. Дайте мне знать, если это поможет.

+0

Это было уже в моем 'config/application.rb' спасибо за предложение, хотя –

2

Удалить дефисы. Конвейер активов использует дефисы для отпечатки пальцев и дефисов в ваших путях шрифтов вызывает проблемы.

+0

Переименовал файлы в' LigatureSymbols211' dot, и я все равно получаю ту же ошибку. Спасибо за предложение! –

+0

Можете ли вы получить доступ к шрифтам по ожидаемому URL? например, something.com/fonts/LigatureSymbols211.eot или something.com/LigatureSymbols211.eot – John

+0

На моем локальном компьютере/dev-сервере да, я могу получить доступ к '/ assets/LigatureSymbols211.eot' и другим расширениям. Я попробовал на производственном сервере отпечаток пальца до того, как прервал компиляцию, но он не работает. –

2

я получил точно такую ​​же ошибку, когда я забыл изменить расширение файла .css в .scss. Это исправило это для меня.

Смежные вопросы