Языковые привязки Ruby GTFS-realtime¶
Предоставляет классы Ruby, созданные на основе спецификации GTFS-realtime ProtocolBuffer. Эти классы позволят вам разобрать двоичный поток данных ProtocolBuffer GTFS-realtime в объекты Ruby.
Утративший силу
По состоянию на февраль 2019 года официальный инструмент google-protobuf
Google protoc не поддерживает расширения в файлах proto2. Сторонний инструмент, ruby-protocol-buffers, можно установить с помощью gem install ruby-protocol-buffers
, но, похоже, он не соответствует существующей структуре привязки Ruby GTFS, поскольку модульные тесты не работают. В результате мы прекращаем использование связки Ruby до тех пор, пока официальная поддержка файлов proto2 не будет реализована в инструментах буферов протоколов Google.
Добавьте зависимость¶
Чтобы использовать классы gtfs-realtime-bindings
в своем проекте, вам необходимо сначала установить Ruby gem:
gem install gtfs-realtime-bindings
Пример кода¶
Следующий фрагмент кода демонстрирует загрузку потока данных GTFS-realtime с определенного URL, его разбор как FeedMessage (корневой тип схемы GTFS-realtime) и итерацию результатов.
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
Более подробную информацию о соглашениях об именах для классов Ruby, созданных на основе gtfs-realtime.proto, можно найти в исходном файле gtfs-realtime.pb.rb.