Generating thousands of maps per minute in Ruby

April 20, 2026

🎯 Live Demo Available
Introducing

MapView

Render beautiful, production-ready maps directly from your Ruby backend. No external APIs. No dependencies. Just pure speed and control.

Zero external dependencies
Lightning-fast rendering
Production-ready & battle-tested

In 2025, at the RubyWorld Conference, engineers from Tokyo Gas presented a real problem:

👉 generate maps in real time 👉 at high throughput 👉 with strict performance constraints

ImageMagick-based solutions couldn’t keep up.


The gap in Ruby

Today in Ruby:

  • RMagick / ruby-vips → rely on external processes
  • native bindings → outdated or unmaintained

There isn’t a modern, simple, truly native option.


The approach

I built ruby-libgd + libgd-gis with a straightforward goal:

  • in-memory rendering
  • no external processes
  • full control from Ruby
Article content
require "gd/gis"
map = GD::GIS::Map.new(
bbox: [139.68, 35.63, 139.82, 35.75],
zoom: 13
)
map.add_geojson("data.geojson")
map.render
map.save("map.png")

What it enables

  • generate maps from GeoJSON
  • draw routes, points, and polygons
  • apply custom styles
  • produce production-ready images

🎥 Full talk (in Spanish)

I presented this in a virtual talk at Ruby SUR:

👉

👉

Article content

In progress

  • animated maps
  • PostGIS integration
  • custom tile servers

👉 Check the project

GitHub: https://github.com/ggerman/ruby-libgd

GitHub: https://github.com/ggerman/libgd-gis

Article content

Leave a comment