Добавить новый путь к ресурсам в 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);
}