(Rails) IMGKIT - Проблемы при экспорте изображений с помощью html и css
Я использую IMGKIT в одном из своих проектов, и мне пришлось использовать их css с опцией html, чтобы удовлетворить требования. Я заметил, что если таблицы стилей установлены следующим образом:
kit = IMGKit.new(html, :quality => 50)
kit.stylesheets << '/path/to/css/file'
и таблица стилей имеет свойство background с относительным url('image.png'), изображение не генерируется при экспорте с использованием kit.to_file:
(Rails.root + "public/pngs/" + "image.png")
Запрос зависает, и если мы заменим фоновый URL на полный URL протоколом, хостом и портом, он хорошо экспортируется.
Нужно ли мне иметь абсолютные URL для всех моих изображений в моей таблице стилей?
Я попытался определить asset_host в моем файле development.rb:
config.action_controller.asset_host = Proc.new { |source|
"#{request.protocol}#{request.host_with_port}"
}
Он заменяет URL в CSS, если я проверяю в браузере, но изображения не генерируются при экспорте через IMGKIT.
1 ответ
IMGKIT требует CSS с абсолютным URL для любого фонового изображения или других активов. Таким образом, вы можете генерировать его динамически по этой ссылке https://coderwall.com/p/exj0ig и с некоторыми шагами
A) Поместите все свои изображения в папку assets / images приложения rails
B) Установите гем 'sass-rails', если не установите https://github.com/rails/sass-rails
C) создайте другое имя файла CSS как css_file_name.css.sccs.erb
D) поместите в него все остальное содержимое css-файла.
E) В файле CSS просто введите имя файла изображения, как показано ниже: background-image: image-url ('image.png');
F) Использовать линию ресурсов ( http://guides.rubyonrails.org/asset_pipeline.html). В качестве режима приложения выполните команду ниже: (1) Режим разработки: RAILS_ENV= комплект разработки рейк-активы exec: прекомпиляция (2) Режим производства: RAILS_ENV= производственный пакет рейк-активы exec: прекомпиляция
G) В вашей конфигурации / средах /
(1) В файле development.rb config.action_controller.asset_host = "ВАШ ЛОКАЛЬНЫЙ ХОСТ-ТЕЛ, т.е. YOUR_LOCALHOST_ADDRESS"
(2) В production.rb config.action_controller.asset_host = " http://assets.example.com/" /ВАШ АДРЕС/
H) И, наконец, свяжите вашу таблицу стилей с IMGKIT, как показано ниже
html_content = "YOUR HTML CONTENT"
kit = IMGKit.new(html_content, height: 900, transparent:true, quality:10) /*YOUR SETTING*/
kit.stylesheets << "#{Rails.root}/public/assets/application.css"
file = kit.to_file(Rails.root + "public/pngs/" + "screenshot.png") /*YOUR IMAGE NAME*/
send_file("#{Rails.root}/public/pngs/screenshot.png", :filename => "screenshot.png", :type => "image/png",:disposition => 'attachment',:streaming=> 'true') /*YOUR ADDRESS WHERE U WANT TO STORE PNG FILE*/
Я) Перезагрузите сервер и наслаждайтесь!!!!!
[ПРИМЕЧАНИЕ: После каждого изменения, пожалуйста, запускайте команду assets pipline, чтобы получить последний файл application.css, созданный из файла расширения.sccs.erb.]