Websiteentwicklung: Ruby on Rails: Eine Ruby on Rails Applikationen von Außen


Woran erkennt man eine Rails-Applikation?

Betrachten wir dazu die Demo-Site von Redmine, einer Projektmanagement-Applikation die in Ruby geschrieben ist.

http://demo.redmine.org/

Die URLs einer Rails-Applikation haben meist keine Endung, oft keine Parameter. Statt dessen ist die Information direkt im Pfad:

 http://demo.redmine.org/projects/learnrails/boards
 http://demo.redmine.org/projects/learnrails/boards/453
 http://demo.redmine.org/projects/learnrails/boards/454
 http://demo.redmine.org/projects/learnrails/boards/455


Dahinter stecken aber nicht Ordner in einem Filesystem, sondern diese URL wird auf Controller, Actions und Parameter umgeschrieben. der Kommandozeilen-Befehl rake routes zeigt die Regeln dafür an:

 GET  /projects/:project_id/boards      {:controller=>"boards", :action=>"index" }
 GET  /projects/:project_id/boards/:id  {:controller=>"boards", :action=>"show"  }

Die action index zeigt dabei eine Liste (der Boards) an, die action show zeigt ein einzelnes Board an.

Für fortgeschrittene ProgrammiererInnen

Bearbeiten

Diese Struktur der URLs ist aber nur der offensichtlichste Teil eines tiefergehenden Plans. Nicht nur GET, sondern auch die anderen HTTP-Methoden werden verwendet:


 GET    /dings           {:controller=>"dings", :action=>"index"  }   # zeigt eine liste aller dinge
 POST   /dings           {:controller=>"dings", :action=>"create" }   # erzeugt ein neues ding (id steht noch nicht fest)
 GET    /dings/new       {:controller=>"dings", :action=>"new"    }   # zeigt ein Eingabeformular für ein ding 
 GET    /dings/:id/edit  {:controller=>"dings", :action=>"edit"   }   # zeigt ein Bearbeitungsformular für ein bestehendes ding
 GET    /dings/:id       {:controller=>"dings", :action=>"show"   }   # zeigt ein bestimmtes ding an
 PUT    /dings/:id       {:controller=>"dings", :action=>"update" }   # speichert/ändert ein bestehendes ding 
 DELETE /dings/:id       {:controller=>"dings", :action=>"destroy"}   # löscht ein ding

Das ist die Grundstruktur die für verschiedene Ressourcen immer wieder gleiche verwendet werden kann. Die Idee dahinter ist REST[1].

Webservice

Bearbeiten

Mit der Endung .xml kann die Rails-Applikation auch XML als Output liefern:

 GET    /dings.xml
 POST   /dings.xml
 GET    /dings/new.xml
 GET    /dings/:id/edit.xml
 GET    /dings/:id.xml
 PUT    /dings/:id.xml
 DELETE /dings/:id.xml

Damit bietet die Web-Applikation automatisch eine REST Webservice Schnittstelle an. Das kann man für AJAX verwenden oder als API für die Applikation.

(Oder man ignoriert es erst mal.)


Quellen

  1. Tilkov(2007): A Brief Introduction to REST. In: InfoQ.