Saltar a contenido

Ruby GTFS-realtime Language Bindings

Versión Gem

Proporciona clases Ruby generadas a partir de GTFS-realtime Protocolo Especificación del buffer. Estas clases le permitirán analizar un protocolo binario Buffer GTFS, fuente de datos en tiempo real en objetos Ruby.

Deprecated

A partir de febrero de 2019, la herramienta oficial de protocolo de Google google-protobuf no admite extensiones en proto2 archivos. Se puede instalar una herramienta de terceros, ruby-protocol-buffers, usando m install ruby-protocol-buffers`, pero no parece coincidir con la estructura existente de los enlaces Ruby GTFS-rt, ya que las pruebas unitarias fallan. Como resultado, estamos desaprobando los enlaces de Ruby hasta que se implemente el soporte oficial para archivos proto2 en las herramientas de búfer de protocolo de Google.

Agregar la dependencia

Para usar las clases gtfs-realtime-bindings en su propio proyecto, primero necesita instalar Ruby gem:

gem install gtfs-realtime-bindings

Código de ejemplo

El siguiente fragmento de código demuestra la descarga de un feed de datos GTFS en tiempo real desde una URL particular, analizándolo como un FeedMessage (el tipo raíz del GTFS-esquema en tiempo real) e iterando sobre los resultados.

require 'protobuf'
require 'google/transit/gtfs-realtime.pb'
require 'net/http'
require 'uri'

data = Net::HTTP.get(URI.parse("URL OF YOUR GTFS-REALTIME SOURCE GOES HERE"))
feed = Transit_realtime::FeedMessage.decode(data)
for entity in feed.entity do
  if entity.field?(:trip_update)
    p entity.trip_update
  end
end

Para obtener más detalles sobre las convenciones de nomenclatura para las clases Ruby generadas a partir de el gtfs-realtime.proto, consulte el archivo fuente gtfs-realtime.pb.rb.