Bagatela udostępnia interfejs programistyczny do wyszukiwania przystanków i optymalnych połączeń w sieci komunikacji miejskiej.
To nie jest skończony projekt. Uruchom testy aby zobaczyć aktualny stan pracy.
- Język programowania: Ruby (implementacja JRuby)
- Testing frameworks: Cucumber i RSpec
- Bazy danych: połączeń OrientDB i rozkładów jazdy CouchDB
- Serwer HTTP: Rexster
- Full-text search: Elasticsearch
Ustaw domyślny interpreter Ruby na JRuby (jeżeli korzystasz z rbenv stanie się to automatycznie gdy znajdziesz się w folderze projektu). Jeżeli korzystasz z Ruby Version Manager wykonaj:
$ rvm use jruby
Using jruby 1.6.3
Ustaw tryb kompatybilności z Ruby 1.9:
$ export JRUBY_OPTS=--1.9
Ściągnij repozytorium i zainstaluj niezbędne biblioteki (wymagany bundler) :
$ git clone git://github.com/Stanley/bagatela.git
$ cd bagatela
$ bundle install
-
Opcja 1:
Replikuj jedną z oficjalnych baz danych. Np.:
$ curl -X POST http://api.bagate.la/_replicate -d '{"source":"kr","target":"http://localhost:5984/kr"}'
-
Opcja 2:
Importuj rozkłady bezpośrednio ze źródła (tj. strony przewoźnika). Zobacz projekt pigeons po więcej informacji.
-
Opcja 3:
Przebiegnij po wszystkich przystankach w mieście, zapisując odjazdy w notesie. Przepisz do komputera.
Kolejnym krokiem przed uruchomieniem wyszukiwarki jest generacja grafu, połączonej struktury przystanków i relacji mnędzy nimi. Funkcjonalność jest w trakcie tworzenia. Może nie działać.
$ bundle exec irb -r lib/bagatela.rb
irb(main):001:0> Bagatela::Graph::Import.new("http://localhost:5984/kr", true).relationships!(Date.parse("23.09.2011")
Zobacz dokumentację wyjaśniającą agrumenty obu metod (wkrótce).
-
Testów:
$ bundle exec cucumber features/
Uwaga: domyślnie test przeprowadzony jest na
http://localhost:8000
. Z powodu braku praw do zapisu, zmiana tego parametru nahttp://api.bagate.la
w plikufeatures/support/env.rb
nie ma sensu (choć teoretycznie jest możliwa). W przyszłości w systemie produkcyjnym zostanie udostępniony jeden użytkownik i baza danych do celów testowych. Testy wymagają uruchomionej bazy CouchDB.$ bundle exec rspec spec/
Uwaga: jeżeli chcesz przywrócić wyświetlanie backtrace, które domyślnie jest wyłączone, zakomentuj
:raise_errors
na początku deklaracji klasyBagatela::RestApi
wapp/main.rb
. -
Aplikacji:
$ PATH_TO_REXSTER/rexster.sh --start -c config/rexster.xml
-
Konsoli:
$ bundle exec irb -r lib/bagatela.rb
http://developer.bagate.la/GRAPH.1.html
Have fun!