Rails - 4 пользовательских пути актива добавлены в application.rb без перезапуска - PullRequest
0 голосов
/ 18 октября 2018

Rails-4

Для шрифта, указанного ниже,

@font-face {
  font-family: "Verdana";src: url(/assets/Verdana.ttf) format("truetype");
}

Расположение файла app / assets / fonts (загруженосамим рельсами)

Теперь, если у меня есть этот файл в папке app / assets / fonts / client_4 ,

Я должен добавить следующее в application.rb

config.assets.paths << Rails.root.join('app', 'assets', 'fonts', 'client_4')

или

Dir.glob("#{Rails.root}/app/assets/fonts/**/").each do |path|
  config.assets.paths << path
end

Работает с URL-адресом шрифта, указанным в качестве URL (/assets/Verdana.ttf), но для загрузки application.rb

* 1023 необходимо перезапустить сервер.* Запрос

Дело в том, что мой файл шрифта загружен пользователем и сохранен во вновь созданной папке client_x, которая находится в каталоге app / assets / fonts.

Я хочу добавить asset_pathв этом случае для этой папки client_x без перезапуска сервера.Пожалуйста, предложите.

Обновление

Я добавляю следующее в контроллер при создании каталога,

MyApplication::Application.config.assets.paths << Rails.root.join('app', 'assets', 'fonts', "client_#{@client.id}/").to_s

И я проверял следующее на странице по тегу erb,

= puts MyApplication::Application.config.assets.paths.inspect

И я получил следующий вывод:

[
[ 0] "/home/..../app/assets/fonts",
[ 1] "/home/..../app/assets/images",
[ 2] "/home/..../app/assets/javascripts",
[ 3] "/home/..../app/assets/stylesheets",
[ 4] "/home/..../vendor/assets/javascripts",
.
.
[20] "/home/..../app/assets/fonts/client_164/",
[21] "/home/..../app/assets/fonts/client_163/"

]

  1. 20-й путь добавляется application.rb и загружается при запуске сервераначалось, я получаю файл шрифта asset_url в font-face

  2. 21-й путь добавлен контроллером, и & я не получаю файл шрифта asset_url в font-face.

Я не получаю, если я проверяю, я вижу оба пути в активах, но я не получаю URL ресурса для файлов шрифтов внутри client_163, добавленного контроллером.Я хочу это без перезагрузки сервера.Пожалуйста, предложите, если eagerload или автозагрузка могут помочь.

1 Ответ

0 голосов
/ 22 октября 2018

Я не смог получить именно то, что хотел, но нашел альтернативу для работы.

Я не добавил путь к активам для подкаталогов в app / assets / fonts /.

Я работал с полным URL-адресом, таким как "# {APP_URL} / assets / client _ # {client_id} / # {self [file]}", который выдает URL-адрес типа 'http://localhost:3000/assets/client_163/GreatVibes-Regular.otf'

Здесь APP_URLдля разработки, 'http://localhost:3000' установлено в development.rb.Аналогичным образом добавлен для постановки и производства.

Лучше сохранить переменную APP_URL в application.yml (реализующий гем figaro) и получить доступ как "# {ENV [APP_URL]}" (примечание: добавить application.yml в .gitignore)

В ожидании лучшего подхода.

Обновление

При подготовке и производстве я получаю шрифт для небезопасный https url, помогите, пожалуйста.

...