Добавить новый путь к ресурсам в Rails 3.1

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

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


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

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

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

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

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

Ответ 1

Andrew, 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

Ответ 2

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

  # Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"

Ответ 3

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

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

y Rails.application.config.assets.paths 

(y является ярлыком для метода yaml)

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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