コンテンツにスキップ

Ruby GTFS-realtime言語バインディング

Gemバージョン

GTFS-realtimeのProtocolBuffer仕様から生成されたRubyクラスを提供します。 これらのクラスは、バイナリ ProtocolBuffer GTFS-realtime データフィードを Ruby オブジェクトにパースすることを可能にします。

非推奨

2019年2月現在、公式のGoogle protocツールgoogle-protobufはproto2ファイル内の拡張子をサポートしていません。 サードパーティのツールであるruby-protocol-buffers gem install ruby-protocol-buffersインストールできますが、ユニットテストが失敗するため、Ruby GTFSバインディングの既存の構造とは一致しないようです。 そのため、Googleプロトコルバッファツールで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 のソースファイルを参照してください。