Добавить новый путь к активу в Rails 3.1 - PullRequest
78 голосов
/ 28 июня 2011

Кто-нибудь знает, как добавить еще одну папку в конвейер ресурсов в Rails 3.1?

Я бы хотел обслуживать app/assets/fonts так же, как обслуживается app/assets/images.


Обновление: 5-7-2013

Просто добавим некоторые пояснения для будущих людей, которые найдут этот вопрос, чтобы явно добавить путь к ресурсу, в файле application.rb:

config.assets.paths << "#{Rails.root}/app/assets/fonts"

Однако, поскольку указанный выше путь находится под app/assets, вам не нужно явно добавлять его, вам просто нужно перезапустить приложение rails, чтобы Sprockets мог его забрать.

Вы будетеЯ должен явно добавить пути, которые находятся за пределами app/assets, lib/assets или vendor/assets, и просто помните, что в то время как Sprockets выбирает новые файлы в папках, которые присутствовали при загрузке приложения, по моему опыту, он не забираетновые папки в путях ресурсов без перезапуска.

Ответы [ 6 ]

74 голосов
/ 29 июня 2011

Эндрю, app/assets/fonts на самом деле уже находится в пути загрузки вашего актива вместе с images.Таким образом, вы можете просто указать на актив таким же образом: <%= asset_path('/Ubuntu/Ubuntu-R-webfont.eot') %> [1] или как бы вы ни ссылались на ваши изображения.

Мне потребовалось некоторое время, чтобы обдумать это.Я до сих пор не знаю, что произойдет, если есть файл с таким же именем в app/assets/fonts и app/assets/images.

[1] Предполагается, что у вас есть шрифт app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot

43 голосов
/ 22 июля 2011

Эндрю, Джейсон, согласился. FWIW Я положил это в моем config / application.rb рядом с

  # Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
8 голосов
/ 03 ноября 2013

Создав app/assets/images и app/assets/fonts, они будут автоматически добавлены в путь активов.

Откройте консоль rails после их создания и проверьте с помощью:

y Rails.application.config.assets.paths 

(y - это сокращение для метода yaml)

3 голосов
/ 12 октября 2012

Работает без добавления пути, но будьте осторожны, если вы используете правильное имя файла для ресурса.

url("#{asset_path 'fontawesome-webfont.eot'}?#iefix") format('embedded-opentype'),
...
url("#{asset_path 'fontawesome-webfont.svg'}#FontAwesome") format('svg');

Например, в этом случае оставьте ?#iefix вне имени файла шрифта

2 голосов
/ 12 августа 2011

Я могу подтвердить, что это работает без добавления новых путей к конфигурации в Rails 3.1.0.rc4 (и предположительно выше).Я отскочил мой сервер, вы могли бы сделать то же самое.

1 голос
/ 04 мая 2013

Создайте assets/fonts папку и добавьте в нее какой-нибудь шрифт и используйте тему в вашем CSS-файле, как указано ниже

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