関西地方の鉄道運行情報を取得するRuby Gemです。
- 🚃 関西主要路線の運行情報をリアルタイム取得
- 🔄 自動リトライ機能(指数バックオフ付き)
- ⚡ 高速なHTTP通信とHTML解析
- 🛡️ 包括的なエラーハンドリング
- 📝 完全な型定義(RBS)
- 🎯 90%以上のテストカバレッジ
Gemをインストール:
gem install kansai_train_infoまたは、Gemfileに追加:
gem 'kansai_train_info', '~> 0.2.0'require 'kansai_train_info'
# 単一路線の情報を取得
KansaiTrainInfo.get(['大阪環状線'])
# => 大阪環状線は平常運転です
# 複数路線の情報を取得
KansaiTrainInfo.get(['大阪環状線', '御堂筋線'])
# => "大阪環状線は列車遅延があります。10分程度の遅れが発生しています。"
# 詳細URLを含める
KansaiTrainInfo.get(['大阪環状線'], url: true)
# => "大阪環状線は列車遅延があります。https://transit.yahoo.co.jp/traininfo/detail/263/0/"
# 利用可能な路線を表示
KansaiTrainInfo.help# 単一路線
kansai_train_info get 大阪環状線
# 複数路線
kansai_train_info get 大阪環状線 御堂筋線
# URLを含める
kansai_train_info get 大阪環状線 --url
# ヘルプ
kansai_train_info help- 大阪環状線
- 近鉄京都線
- 阪急京都線
- 御堂筋線
- 烏丸線
- 東西線
カスタム設定が可能です:
KansaiTrainInfo.configure do |config|
config.timeout = 30 # タイムアウト時間(秒)
config.max_retries = 5 # 最大リトライ回数
config.retry_delay = 2 # リトライ間隔の基準時間(秒)
config.user_agent = 'MyApp/1.0'
end詳細はConfiguration Guideを参照してください。
- Ruby >= 3.0.0
Run tests with coverage report:
# Run all tests
bundle exec rspec
# Run specific test file
bundle exec rspec spec/kansai_train_info/client_spec.rb
# View coverage report
open coverage/index.htmlThe project maintains a minimum test coverage of 90%.
This gem uses RBS for type definitions and Steep for type checking.
# Run type checking
bundle exec steep check
# Or use rake task
bundle exec rake steepRubocopでコードスタイルをチェック:
bundle exec rubocop- API Documentation - 詳細なAPIリファレンス (English)
- Configuration Guide - 設定オプションの詳細 (English)
- Contributing Guide - 貢献方法 (English)
- Changelog - 変更履歴
このgemは以下のカスタムエラーを提供します:
KansaiTrainInfo::NetworkError- ネットワーク関連のエラーKansaiTrainInfo::TimeoutError- タイムアウトエラーKansaiTrainInfo::ParseError- HTML解析エラーKansaiTrainInfo::InvalidRouteError- 無効な路線名エラー
begin
KansaiTrainInfo.get(['存在しない路線'])
rescue KansaiTrainInfo::InvalidRouteError => e
puts "エラー: #{e.message}"
endkansai_train_info is licensed under the GPLv3 license for all open source applications.
Please do not use this project for commercial use, it is not intended to be used for commercial use.
See LICENSE.txt for details.