Ruby GTFS-realtime Sprachbindungen¶
Stellt Ruby-Klassen zur Verfügung, die aus der GTFS-realtime ProtocolBuffer-Spezifikation generiert wurden. Mit diesen Klassen können Sie einen binären ProtocolBuffer GTFS-Realtime Datenfeed in Ruby-Objekte parsen.
Abgelehnt
Ab Februar 2019 unterstützt das offizielle google-protobuf
Google protoc-Tool keine Erweiterungen in proto2-Dateien. Ein Tool eines Drittanbieters, Ruby-protocol-buffers, kann mit gem install ruby-protocol-buffers
, scheint aber nicht zur bestehenden Struktur der GTFS zu passen, da die Unit-Tests fehlschlagen. Daher verwerfen wir die Ruby, bis die offizielle Unterstützung für proto2-Dateien in den Google-Protokollpuffer-Tools implementiert ist.
Hinzufügen der Abhängigkeit¶
Um die gtfs-realtime-bindings
in Ihrem eigenen Projekt zu verwenden, müssen Sie zunächst das Ruby-Gem installieren:
gem install gtfs-realtime-bindings
Beispielcode¶
Der folgende Codeausschnitt veranschaulicht das Herunterladen eines GTFS-Realtime datenfeeds von einer bestimmten URL, das Parsen als FeedMessage (der Stammtyp des GTFS-Realtime schemas) und die Iteration der Ergebnisse.
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
Weitere Details zu den Namenskonventionen für die Ruby-Klassen, die aus dem gtfs-realtime.proto erzeugt werden, finden Sie in der Quelldatei gtfs-realtime.pb.rb.