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

Видимо, на неделе гугл отключил 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. Мы не будем хардкодить имя хоста, так в девелопменте будут использоваться локальные картинки, и не нужно будет загружать их с продакшн-сайта. (UPD. Спасибо DeKaNszn за идею)

#= require markerclustererplus/src/markerclusterer_packed.js
#= require infobox/src/infobox_packed.js
# ... require anything you want MarkerClusterer.IMAGE_PATH = '/assets/markerclustererplus/images/m' # Это было исправлено с подсказки в комментариях
# 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, Источник
 

Добавить комментарий


Защитный код
Обновить