Zum Inhalt springen

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

Aus Wikibooks


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.