- PVSM.RU - https://www.pvsm.ru -

Раздаём картинки рельсами после отключения Google’ом svn репозиториев

Видимо на неделе гугл отключил svn репозитории code.google.com.
Если вы не подключали скрипты, раздаваемые из этих репозиториев, вы могли этого не заметить, как и я.
Меня удивил увеличившийся трафик в репозиторий google-maps-utility-library-v3 [1], но сначала я не понял, почему это может быть. Позже я увидел, что пропали изображения иконок кластеров на карте. Дело в том, что путь до иконок захардкожен в MarkerClusterer и указывает на code.google.com.

Как настроить sprockets раздавать эти картинки, читайте под катом.

Сначала настроим рельсы, подразумевая что у нас уже есть копия google-maps-utility-library-v3 в репозитории. Если у вас её нет, как её можно сделать, будет написано ниже.

Добавьте путь до google-maps-utility-library-v3 в пайплайн (скорее всего, вы это уже сделали):

# config/initializer/assets.rb
Rails.application.config.assets.paths += %W(
 #{Rails.root}/vendor/assets/google-maps-utility-library-v3
)

Теперь скажем sprockets, что мы хотим, чтобы он собрал картинки из библиотеки:

# config/initializer/assets.rb
Rails.application.config.assets.precompile += %w(
 markerclustererplus/images/*.png
)

Настроим MarkerClusterer использовать наши картинки. Нужно изменить расширение файла с .js.coffe на .js.coffee.erb. Мы не будем хардкодить имя хоста, так в девелопменте будут использоваться локальные картинки, и не нужно будет загружать их с продакшн-сайта.

#= require markerclustererplus/src/markerclusterer_packed.js
#= require infobox/src/infobox_packed.js
# ... require anything you want

MarkerClusterer.IMAGE_PATH = <%= (Rails.application.routes.url_helpers.root_url +
 'assets/markerclustererplus/images/m').to_json %>

На этом всё. Далее о том, как добавить google-maps-utility-library в ваш репозиторий.

Я использую git подмодули:

git submodule add 
  https://github.com/printercu/google-maps-utility-library-v3-read-only.git 
  vendor/assets/google-maps-utility-library-v3

Не забудьте настроить деплой. Добавьте после чекаута:

git submodule init
git submodule sync
git submodule update — init

Теперь всё готово к выкатке.

Вы также можете поискать bower-пакеты или добавить библиотеку в репозиторий целиком, если не хотите использовать подмодули.

Автор: printercu

Источник [2]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ruby/120650

Ссылки в тексте:

[1] google-maps-utility-library-v3: https://github.com/printercu/google-maps-utility-library-v3-read-only

[2] Источник: https://habrahabr.ru/post/283550/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best