Ruby on Rails: RoR

Aus Wikibooks

Was ist Ruby on Rails und warum wurde Rails geschrieben?[Bearbeiten]

Rails gilt als "heiß". Warum? Und was ist Rails?

Nun, Rails ist ein "web application framework" und es steckt in vielen "Web 2.0" Auftritten. Viele Entwickler sagen, sie lieben es, wir auch. Und wir stehen zu der Behauptung, dass man damit Webapplikationen extrem schnell und zuverlässig entwickeln kann. Ein Grund, weshalb sich nicht nur Entwickler, sondern auch Unternehmer für Rails interessieren. An die Öffentlichkeit kam Ruby on Rails mit kleinen Unternehmen und Startups wie 37signals. Inzwischen benutzen das Framework auch große Firmen wie Amazon, eBay, XING oder AOL.

Schauen wir genauer hin. Rails wurde von David Heinemeier Hansson, 37signals, für eine Web-Applikation, entworfen. Es sollte keine Allzweckwaffe werden, sondern die Basisarchitektur für diese Web-Applikation, Basecamp. Im Sommer 2004 wurde Rails aus Basecamp extrahiert und als Opensource-Projekt veröffentlicht. Inzwischen arbeitet ein Entwicklungsteam von 10 Entwicklern an dem Framework und es gibt viele Beiträge aus der Web-Community, die in Rails eingeflossen sind.

Versionsgeschichte (Major-Relaeases)[Bearbeiten]

  • Version 0.5.0 - 24. Juli 2004 - Rails Vorabversion öffentlich vorgestellt

  • Version 1.0.0 - 13. Dezember 2005 - die Version 1.0
  • Version 1.1.0 - 28. März 2006 - Unterstützung für RJS
  • Version 1.2.0 - 18. Januar 2007 - Unterstützung für REST
  • Version 1.2.3 - 13. März 2007 - wichtige maintenance release von Rails 1.2

  • Version 2.0.0 - 06. Dezember 2007 - REST wird Default, selten benutzte Teile werden ausgelagert
  • Version 2.1.0 - 31. Mai 2008 - Zeitzonen, named scopes, sexy migrations (Migrationen)
  • Version 2.2.2 - 21. November 2008 - I18n, Thread-sicher
  • Version 2.3.2 - 15. März 2009 - Templates, Engines, Rack, Metal

  • Version 3.0 - in Arbeit (Edge) - Merb integration

Eigenschaften von Rails[Bearbeiten]

Dies Vorgeschichte erklärt einen Teil der Eigenschaften, die Rails zurecht nachgesagt werden.

  • Rails ist pragmatisch
  • Rails ist auf Webapplikationen ausgerichtet

Andere Eigenschaften ergeben sich aus der zugrundeliegenden Programmiersprache Ruby und aus der Philosophie, mit der Rails entworfen wurde.

  • Rails hat eine kurze, klare Syntax
  • Rails ist "opinionated" und setzt auf "convention over configuration"
  • Rails ist trotzdem flexibel
  • Rails unterstützt agile Softwareentwicklung

Rails ist in Ruby geschrieben[Bearbeiten]

RoR ist die Abkürzung für Ruby on Rails. Rails ist in Ruby geschrieben. Das hat durchaus eine Bedeutung, denn Ruby ist nicht irgendeine höhere Programmiersprache, sondern eine extrem flexible interpretierte Sprache. Ruby wurde Mitte der Neunziger Jahre vom Japaner Yukihiro Matsumoto entworfen und wurde beeinflusst von Smalltalk, Perl, Lisp, Scheme, Python, CLU, Eiffel, Ada und Dylan. Für Rails wichtig ist die Möglichkeit Klassen nachträglich zu erweitern und der "method_not_found"-Mechanismus, der die Delegation von Aufgaben an Komponenten radikal vereinfacht. Damit wurde es beispielsweise möglich, ohne großen Programmieraufwand, alle Objekte die ihre Attribute in der Datenbank ablegen, bzw. deren Klassen um eine Reihe von Methoden zu erweitern, die die Handhabung erleichtern.

Außerdem lassen sich in Ruby einfach domänenspezifische Sprachen (engl. domain-specific language, DSL) entwickeln. Also Sprachen, die speziell für ein bestimmtes Problemfeld (die Domäne) entworfen und implementiert werden. Im Falle von Rails ist die Domäne der Bau von Webapplikationen.

Rails wurde für datenbankgestützte Webapplikationen entworfen[Bearbeiten]

Wie gesagt, Rails wurde für Webapplikationen entworfen. Für statische Webseiten oder Webauftritte, die sich ohne weitere Anpassungen direkt mit CMS realisieren lassen, benötigt man Rails nicht. Große "Enterprise-Applikationen" wurden bisher eher mit Java-Frameworks gebaut, aber das kann sich schnell ändern, denn die meisten Hindernisse, die gegen den Einsatz von Rails sprachen, sind inzwischen beseitigt. Das größte Hindernis sind inzwischen Vorurteile, die auf alten Versionen von Rails beruhen.

Schauen wir uns die Eigenschaften von Rails für datenbankgestützte Webapplikationen an

  • Rails enthält mit ActiveRecord eine Bibliothek für das object-relationale Mapping, die auch mit Relationen umgehen kann.
  • Rails enthält mit Active-Support Erweiterungen von Ruby speziell für Webapplikationen
  • Rails gibt eine MVC Architektur vor
  • Rails enthält eine Systematik für Vorlagen (Templating system)
  • Rails interpretiert in der View-Komponente HTML-Dateien mit eingebettetem Ruby-Code (embedded ruby)
  • Rails sieht Helpermodule um Code aus View und Controller auszulagern
  • Rails bindet mit Prototype and Scriptaculous zwei Javascript-Frameworks ein.
  • Rails bietet (seit Version 1.2) Unterstützung für das REST Protokoll, d.h. mit Rails lassen sich "restful applications" einfach erstellen.
  • Rails unterstützt die Internationalisierung von Applikationen (seit Version 2.2).

Rails ist "opinionated" und setzt auf "convention over configuration"[Bearbeiten]

Die meisten Webapplikationen enthalten viel Konfigurationscode. In Rails ist das anders. Rails gibt Konventionen vor, und wenn wir uns an diese Konventionen halten, entfällt die Konfiguration weitgehend (convention over configuration). Weil Rails auch eine andere Konfiguration erlaubt, bleibt uns die Flexibilität voll erhalten.

Ein Beispiel. Wenn wir die Attribute einer Klasse und die Spalten in der Datenbanktabelle gleich benennen, mappt Rails die Daten automatisch. Haben wir eine proprietäre Datenbank mit vorgegebenen Spaltennamen geben wir für diese eine Datenbank das Mapping explizit an.

In der Praxis ist das sehr angenehm. Weil die Konventionen gut gewählt sind, haben Anfänger ein gutes Gerüst und auch erfahrene Entwickler fühlen sich entlastet, wenn ihnen belanglose Entscheidungen abgenommen werden und sich das Framework auch noch darum kümmert, dass Sie über das ganze Projekt konstant getroffen werden. Man spricht deswegen auch von opinionated Software. Rails hat quasi eine Vorstellung, welche Konventionen gut sind und setzt sie um, wenn wir nicht explizit widersprechen.

Außerdem enthält Rails ein Testframework und erstellt automatisch Testgerüste, so dass es den Entwicklern leicht gemacht wird Softwaretests zu erstellen. Das steigert die Qualität der Applikationen und erleichtert agile Techniken, z.B. das sogenannte "refactoring", also die Verbesserung der Struktur von Programmen ohne Funktionsänderung. Auch das lohnt sich, denn klarer Code lässt sich leicht warten und erweitern.

Statt einer Zusammenfassung. Sie haben RoR nicht verstanden, ...[Bearbeiten]

  • wenn Sie Rails für eine eierlegende Wollmilchsau halten, mit der man von Cocoa-Applikationen bis zu IPod-Programmen alles erstellen kann.
Zwar sind Teile von Rails wie Active Record auch für andere Zwecke sinnvoll. Aber Rails ist auf Webapplikationen ausgerichtet und für andere Applikationen wird man allenfalls Teile von Rails einbinden.
  • wenn Sie glauben, sie könnten die Rails-Konventionen nicht brechen.
Sie können praktisch alle Rails Konventionen verändern indem sie explizite Angaben machen. So können Sie beispielsweise eine proprietäre Datenbank ansprechen, indem sie ein Mapping definieren.
  • wenn Sie glauben, sie könnten mit Rails gute Applikationen erstellen, ohne Programmieren zu erlernen,
Auch wenn vieles vorkonfiguriert ist, um ein komplexes System wie Rails virtuos einzusetzen, muss man es verstehen.