предварительно скомпилировать определенные активы без отпечатка md5

в моем проекте rails 4 css используются файлы шрифтов. поэтому их нужно предварительно скомпилировать.

Я добился этого, добавив следующие строки в config / environment / production.rb

  # Add the fonts path
  config.assets.paths << Rails.root.join('vendor', 'assets', 'fonts','fonts')
  #
  # # Precompile additional assets
  config.assets.precompile += %w( *.svg *.eot *.woff *.ttf )

и запуск активов rake: предварительная компиляция в продакшене.

однако результат следующий:

I, [2013-10-10T19:27:51.931963 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-ab2f6984951c07fd89e6afdefabd93c7.eot
I, [2013-10-10T19:27:51.940615 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-24dfb40c91db789b8b8faba6886ac1ef.svg
I, [2013-10-10T19:27:51.950685 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-4b2130768da98222338d1519f9179528.ttf
I, [2013-10-10T19:27:51.983230 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-7a07f26f72466361ac9671de2d33fd1c.woff

а файлы css относятся к файлам шрифтов без этого отпечатка md5.

как я могу предварительно скомпилировать активы, чтобы они создавались без отпечатка md5? или в таком случае я должен просто поместить их в папку public / fonts /?


person Pavel K.    schedule 10.10.2013    source источник
comment
Вы решаете это? У меня точно такая же проблема..   -  person Sergey Chechaev    schedule 17.11.2013
comment
Мой ответ работает?   -  person Ludovic    schedule 23.11.2013


Ответы (1)


Следуй этим шагам

  • Ваш шрифт должен быть в app/assets/fonts
  • Добавьте свой шрифт в путь к ресурсам (как и вы), но предпочитаете config/application.rb
  • Объявите свой шрифт в CSS с помощью à @font-face. Здесь вы найдете некоторую помощь
  • Если вы не используете SCSS, вы должны иметь встроенный css, например application.css.erb, и использовать помощник asset_path() для реализации пути к шрифтам в объявлении font-face.

Пример без SCSS:

@font-face {
  font-family: 'MyFont';
  src:url('<%= asset_path("myfont.eot")%>');
  src:url('<%= asset_path("myfont.eot?#iefix")%>') format('embedded-opentype'),
    url('<%= asset_path("myfont.svg#myfont")%>') format('svg'),
    url('<%= asset_path("myfont.woff")%>') format('woff'),
    url('<%= asset_path("myfont.ttf")%>') format('truetype');
  font-weight: normal;
  font-style: normal;
}
person Ludovic    schedule 17.11.2013
comment
Проблема не в том, как создавать шрифты, проблема при предварительной компиляции ресурсов для создания производственных шрифтов, а в отпечатке пальца md5. Но после того, как в сетевой консоли появилась ошибка 404 fontawesome-webfont-62877.woff. Похоже, что рельсы не видят предварительно скомпилированные активы в publick / assets fontawesome-webfont-62877-e70f92449ebfddada3d455eb44542655.woff, но когда я добавляю файл fontawesome-webfont-62877.woff без md5, он работает нормально. Как создать прекомпилятор, который позволяет видеть шрифты в продакшене. - person Sergey Chechaev; 17.11.2013
comment
@SergeyChechaev С моим методом все работает в продакшене. С rails3 у меня проблемы, решением было скопировать каталог шрифтов в public / assets /. Если вы не хотите предварительно компилировать шрифты, почему вы хотите добавить их в систему ресурсов? Это немного странно :) - person Ludovic; 17.11.2013
comment
Я не понимаю, как предварительно скомпилировать активы в производственном режиме, что это нормально, у меня ошибка 404. - person Sergey Chechaev; 17.11.2013
comment
@SergeyChechaev внимательно прочитайте ответ - вам нужно изменить ваши (S) CSS-файлы, чтобы они имели расширение .erb, чтобы при предварительной компиляции путь к файлу шрифтов с отпечатками пальцев включался вместо необработанного имени файла. - person Mike Atlas; 20.12.2013