Ruby GTFS-realtime 言語バインディング¶
GTFS-realtime Protocol Buffer 仕様から生成された Ruby クラスを提供します。これらのクラスにより、バイナリ Protocol Buffer GTFS-realtime データフィードを Ruby オブジェクトに解析できます。
非推奨
2019年2月時点で、公式の google-protobuf Google protoc ツールは、proto2 ファイル内の拡張機能をサポートしていません。サードパーティ製ツールである ruby-protocol-buffers は gem install ruby-protocol-buffers を使用してインストールできますが、ユニットテストが失敗するため、既存の Ruby GTFS-rt バインディングの構造と一致していないようです。その結果、Google protocol buffer ツールで proto2 ファイルの公式サポートが実装されるまで、Ruby バインディングを非推奨とします。
依存関係を追加する¶
自身のプロジェクトで gtfs-realtime-bindings クラスを使用するには、まず Ruby gem をインストールする必要があります。
gem install gtfs-realtime-bindings
コード例¶
以下のコードスニペットは、特定の URL から GTFS-realtime データフィードをダウンロードし、それを 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
gtfs-realtime.proto から生成される Ruby クラスの命名規則の詳細については、gtfs-realtime.pb.rb のソースファイルを確認してください。