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

в 9:50, , рубрики: Google Maps, rails, ruby, ruby on rails

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

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js