Moscow Metro gem

Gem Version Build Status Maintainability Test Coverage Coverage Status

Скачен 4 154 раза

Что оно делает

Список станций и линий Московского метрополитена + хелперы.

Как оно это делает

Предполагается 2 варианта использования этого джема:

  1. Использовать gem в качестве базы данных, не создавая таблиц в своей БД. Если gem отстанет от жизни, можно форкнуть или прислать PR.
  2. Хранить станции и линии в БД, а gem использовать для валидаций.

1. Использовать gem в качестве базы данных

Для данных о станциях и линиях есть ActiveModel-подобные классы с методами поиска:

MoscowMetro::Station.all #=> Array
MoscowMetro::Line.all    #=> Array
MoscowMetro::Line.find_by_uid("11A") #=> #
MoscowMetro::Line.find_by_uid("404") #=> nil

и attribute-readers у экземпляров:

line = MoscowMetro::Line.all.first #=> #<struct MoscowMetro::Line::Record...>
line.color #=> "#f91f22"
line.name  #=> "Сокольническая"
line.uid   #=> "1"
station = MoscowMetro::Station.all.first #=> #<struct MoscowMetro::Station::Record...>
station.coordinates #=> [37.7191, 55.7524] || []
station.latitude    #=> 37.7191 || nil
station.longitude   #=> 55.7524 || nil
station.line_uid    #=> "8"
station.name        #=> "Авиамоторная"
station.name_en     #=> "Aviamotornaya" || nil
station.name_uniq   #=> false || true

2. Использовать gem для валидаций

Например, так:

# models/metro/station.rb
class Metro::Station < ActiveRecord::Base
  validates :name, inclusion: { in: MoscowMetro::Station.names }
end

Ссылки