www.wikidata.de-de.nina.az
Ruby on Rails kurz Rails fruher auch oft kurz RoR ist ein ursprunglich von David Heinemeier Hansson in der Programmiersprache Ruby geschriebenes und quelloffenes Webframework Es wurde im Juli 2004 zum ersten Mal der Offentlichkeit vorgestellt Ruby on RailsRails Standard SeiteBasisdatenEntwickler Rails Core Team 1 Erscheinungsjahr 25 Juli 2004Aktuelle Version 7 1 2 2 10 November 2023 Betriebssystem plattformubergreifendProgrammiersprache Ruby 3 Kategorie WebframeworkLizenz MIT Lizenz 4 rubyonrails orgRails ist gepragt von den Prinzipien don t repeat yourself DRY und Konvention vor Konfiguration Das heisst statt einer variablen Konfiguration sind Konventionen fur die Namensgebung von Objekten einzuhalten aus denen sich deren Zusammenspiel automatisch ergibt Diese Funktionen ermoglichen eine rasche Umsetzung von Anforderungen Inhaltsverzeichnis 1 Konzept 2 Geschichte 2 1 Version 1 0 2 2 Version 1 1 2 3 Version 1 2 2 4 Version 2 0 2 5 Version 2 1 2 6 Version 2 2 2 7 Version 2 3 2 8 Version 3 0 2 9 Version 3 1 2 10 Version 3 2 2 11 Version 4 0 2 12 Version 4 1 2 13 Version 4 2 2 14 Version 5 0 2 15 Version 5 1 2 16 Version 5 2 2 17 Version 6 0 2 18 Version 6 1 3 Philosophie 4 Scaffolding 5 Webserver Unterstutzung 6 Schichten 6 1 Model 6 2 Controller 6 3 View 7 Literatur 8 Weblinks 9 EinzelnachweiseKonzept BearbeitenRails folgt der Model View Controller Architektur MVC und besteht aus funf Modulen Active Support Ruby Erweiterungen von Rails Active Record Objektabstraktionsschicht basierend auf dem objekt relationalen Muster oder Model ORM das M aus MVC von Martin Fowler Action Pack Request Behandlung und Response Ausgabe Die Anfragen werden durch eine offentliche Methode des Controllers Action Controller das C aus MVC behandelt Die Ausgabe wird mittels eines Templates Action View das V aus MVC vorgenommen Action Mailer E Mail Versand und Empfang Active Resource Mit Version 2 0 wurde Action Webservice durch Active Resource ersetzt Web Service Programmierung Unterstutzung fur XML RPC und REST Rails integriert die JavaScript Frameworks Prototype und Script aculo us und bietet so Methoden zur einfachen Entwicklung von Ajax Applikationen Geschichte BearbeitenVersion 1 0 Bearbeiten Ursprunglich wurde Rails fur die webbasierte Projektmanagementsoftware Basecamp entwickelt dann jedoch daraus extrahiert und im Juli 2004 zum ersten Mal der Offentlichkeit vorgestellt Die Version 1 0 wurde am 13 Dezember 2005 fertiggestellt Version 1 1 Bearbeiten Schon am 28 Marz 2006 folgte die Version 1 1 Neu waren vor allem RJS Ruby on Rails JavaScript Templates das es ermoglichte Templates fur JavaScript zu erstellen sowie Verbesserungen an ActiveRecord die es unter anderem erlauben polymorphe Assoziationen zu benutzen Ausserdem wurde die Performance verbessert 5 Version 1 2 Bearbeiten Am 19 Januar 2007 erschien die Version 1 2 Highlights der Version 1 2 waren vor allem REST Routing nach MIME Type und ein Interface zur sicheren Behandlung von UTF 8 Strings Ausserdem wurde eine Handvoll von Methoden als deprecated gekennzeichnet Diese gaben daraufhin Warnungen aus und es wurde angekundigt dass sie aus dem nachsten Major Release der Version 2 0 aus Rails entfernt werden 6 Version 2 0 Bearbeiten Am 7 Dezember 2007 erschien nach knapp einem Jahr Entwicklungsarbeit Rails 2 0 7 Sie brachte mehrere hundert Neuerungen mit sich und vollzog die Umstellung von SOAP zu REST als Plattform fur Web Services 8 Version 2 1 Bearbeiten Am 1 Juni 2008 erschien die Version 2 1 die einige Verbesserungen und Neuerungen brachte Behandlung von Zeitzonen optimiert Erlaubt das Definieren der Anwendung von Abhangigkeiten zu RubyGems und kann Anderungen an Models verfolgen wodurch auch die Datenbankzugriffe effizienter werden Named Scopes eingefuhrt mit denen Queries mit haufig benotigten Bedingungen definiert werden konnen Migrations wurden dahingehend geandert dass diese nicht mehr durchnummeriert werden sondern einen Zeitstempel erhalten Die fruhere Handhabung fuhrte beim Entwickeln in Teams zu Problemen wenn gleichzeitig zwei Entwickler eine neue Migration erstellten die dann die gleiche Nummer erhielt 9 Version 2 2 Bearbeiten Die Version 2 2 erschien am 21 November 2008 Sie brachte unter anderem folgendes Internationalisierung Durch Integration des l18n Gems steht nun eine standardmassige API fur die Internationalisierung zur Verfugung Rails ist ab dieser Version kompatibel zu Ruby 1 9 und JRuby Unterstutzt etag und last modified in HTTP Headern Seiten die sich seit dem letzten Besuch nicht geandert haben mussen so nicht erneut gesendet werden ThreadsicherheitVersion 2 3 Bearbeiten Die Version 2 3 erschien am 15 Marz 2009 Sie umfasste neben vielen kleineren Verbesserungen sogenannte Templates Diese dienen dazu immer wieder benotigte Konfigurationen direkt mit der Erstellung der Applikation generieren zu lassen Mit den Engines wurde es ermoglicht Applikationen wie Plugins in andere Rails Applikationen einzubetten Nested forms erlauben es nun komfortabel definierte Abhangigkeiten zwischen Models im View abzubilden Rails basiert ab dieser Version auf der Middleware Rack und erlaubt daher auch den Zugriff direkt auf diese Mit Rails Metal wurde es moglich Applikationsteile die sehr haufig aufgerufen werden und nur simple Funktionalitat bereitstellen stark zu beschleunigen Dabei verzichtet der Entwickler jedoch auf den meisten Komfort den Rails sonst bieten wurde Version 3 0 Bearbeiten Am 29 August 2010 wurde Rails 3 0 veroffentlicht 10 Rails wurde in dieser Version mit dem zweiten grossen Ruby Webframework Merb zusammengefuhrt 11 Zudem wurde Rails modularer gestaltet Dies soll es einerseits erleichtern Teile von Rails bspw ActiveRecord ausserhalb von Rails einzusetzen Zugleich ist es nun einfacher moglich auf Wunsch bestimmte Teile von Rails durch andere Bibliotheken zu ersetzen Des Weiteren wurde die Javascript Unterstutzung auf Unobtrusive JavaScript umgestellt Version 3 1 Bearbeiten Ein erstes Update von Rails 3 wurde am 31 August 2011 veroffentlicht 12 In dieser Version wurde die Asset Pipeline eingefuhrt mit der alle CSS und Javascript Dateien vor der Auslieferung in je eine Datei zusammengefugt und komprimiert werden Dies soll die Geschwindigkeit verbessern Auf der Front End Seite kommen seit 3 1 Sass fur die Entwicklung von Stylesheets und CoffeeScript als JavaScript Praprozessor zum Einsatz Die Standard Bibliothek fur JavaScript ist seither nicht mehr Prototype sondern jQuery 13 Version 3 2 Bearbeiten Am 20 Januar 2012 wurde Version 3 2 veroffentlicht 14 Darin wurde unter anderem die Performance des Entwicklungsmodus verbessert Version 4 0 Bearbeiten Am 25 Juni 2013 wurde Version 4 0 veroffentlicht 15 Version 4 1 Bearbeiten Am 8 April 2014 wurde Version 4 1 0 veroffentlicht 16 Version 4 2 Bearbeiten Am 19 Dezember 2014 wurde Version 4 2 0 veroffentlicht 17 Version 5 0 Bearbeiten Am 30 Juni 2016 wurde Version 5 0 veroffentlicht Wesentliche Neuerungen sind die Integrationen von Action Cable einer WebSocket Implementierung in Ruby Generatoren fur schlanke Web APIs und eines eigenen Test Frameworks namens Test Runner 18 Version 5 1 Bearbeiten Am 27 April 2017 wurde Version 5 1 veroffentlicht Wesentliche Neuerungen sind die Unterstutzung von Yarn einem Paketverwalter fur Javascript Abhangigkeiten und Webpack einem Asset Bundler fur JavaScript Weiter wurden die Methoden zum Generieren von Web Formularen form for form tag vereinheitlicht zu form with Tests mittels Webbrowsern Capybara integriert und JQuery als zwingende Abhangigkeit entfernt 19 Version 5 2 Bearbeiten Am 9 April 2018 wurde Version 5 2 0 veroffentlicht 20 Version 6 0 Bearbeiten Am 15 August 2019 wurde Version 6 0 0 veroffentlicht Neuerungen in dieser Version sind Webpack als Standard fur JavaScript Action Mailbox Action Text paralleles Testen die Unterstutzung multipler Datenbanken und ein neuer Autoloader 21 Version 6 1 Bearbeiten Am 9 Dezember 2020 wurde Version 6 1 0 veroffentlicht Wesentliche Neuerungen sind die Unterstutzung von Horizontaler Fragmentierung sowie die Moglichkeit die Datenbankverbindung individuell zu wechseln 22 Philosophie BearbeitenAls Grundprinzipien von Rails gelten Don t repeat yourself Wiederhole dich nicht und Convention over configuration Konvention vor Konfiguration Don t repeat yourself Hauptartikel Don t repeat yourself Jede Information sollte nur ein einziges Mal vorhanden sein So reicht es in Rails beispielsweise dank ActiveRecord die Spalten einer Tabelle nur in der Datenbank festzulegen Anstatt diese Informationen noch ein zweites Mal im Quellcode oder einer Konfigurationsdatei kodiert zu verlangen liest ActiveRecord diese Informationen direkt aus der Datenbank Rails erstellt fur das Model automatisch Getter und Setter Methoden damit die Daten einfach in die Datenbank geschrieben bzw von dort gelesen werden konnen Dieses Verfahren hat auch den Vorteil dass die Informationen nicht inkonsistent werden konnen falls beispielsweise die Datenbank geandert dies aber fur die Konfigurationsdatei vergessen wurde Convention over Configuration Hauptartikel Konvention vor Konfiguration Rails erwartet sinnvolle Standardwerte Erwartet wird etwa dass der Primarschlussel einer Tabelle vom Typ Integer ist und ID heisst dass ein Modell mit dem Namen Customer in der Datei Rails root app models customer rb gespeichert ist und die zugehorige Tabelle customers heisst Ist dieses Modell uber eine 1 N Beziehung mit einem Modell Contract verknupft so wird erwartet dass in der Tabelle contracts ein Fremdschlussel mit dem Namen customer id vorhanden ist Wenn diese Standardwerte nicht zutreffen konnen sie einfach umkonfiguriert werden in den meisten Fallen bleibt der Entwickler jedoch von den ausfuhrlichen Konfigurationsmoglichkeiten verschont Scaffolding BearbeitenMittels des eingebauten Scaffolding deutsch etwa Gerustbau ist es moglich Web Anwendungen on the fly zu entwickeln Wenn in der Datenbank etwa ein Feld hinzugefugt wird erscheint es auch sofort in der entsprechenden View New Edit Ansicht Die Moglichkeit des sofortigen Visualisierens eines Datenbankfeldes und das Verknupfen diverser Datenbankoperationen mit ebendiesem Textfeld wird oftmals auch mit dem Begriff CRUD Create Read Update Delete oder CRUD Framework bezeichnet Scaffolding ist vor allem fur Prototyping gedacht und wird in produktiven Anwendungen fast immer mit eigenem Code erganzt Webserver Unterstutzung BearbeitenZum Entwickeln und Testen bietet sich der zum Ruby Paket gehorende Webserver WEBrick als Applikationsserver an Fur den produktiven Einsatz konnen z B Apache oder Lighttpd mit FastCGI genutzt werden aber auch jeder andere Webserver mit CGI oder FastCGI Unterstutzung funktioniert Eine weitere Moglichkeit stellt der grosstenteils in Ruby geschriebene Webserver Mongrel dar der im Gegensatz zu WEBrick fur den Einsatz in einer Systemumgebung geeignet ist Von dem Apache Modul mod ruby wird in der Regel abgeraten stattdessen wird Phusion Passenger auch als mod rails bezeichnet empfohlen Dieses ist nicht nur besonders schnell und wartungsarm es ist hierbei im Gegensatz zu allen anderen genannten Servern auch nicht notig den Webserver neu zu starten wenn eine Applikation erneut aktiviert wird Dies ist insbesondere beim Shared Hosting wichtig Schichten BearbeitenModel Bearbeiten Das Back end einer Rails Applikation bildet im Normalfall eine relationale Datenbank Der Zugriff auf diese wird mit Hilfe von ActiveRecord hergestellt Dabei handelt es sich um eine ORM Schicht welche eine Klasse auf eine Tabelle und ein Attribut auf eine Spalte abbildet Ein Datensatz in einer solchen Tabelle entspricht genau einer Instanz Derzeit werden eine Reihe bekannter Datenbanken wie SQLite Db2 Informix MySQL Oracle PostgreSQL MongoDB Microsoft SQL Server und Sybase unterstutzt Weiterhin besteht die Moglichkeit ein anderes Format zu verwenden z B XML Dateien oder vollstandig auf ein Backend zu verzichten Dank dem in Rails 3 0 eingefuhrten Plugin API kann man die ORM Bibliothek frei wahlen sodass neben ActiveRecord unter anderem auch Sequel und Datamapper welche heute schon von vielen Merb Anwendungen genutzt werden zur Verfugung stehen Controller Bearbeiten Die Steuerungsschicht einer Rails Applikation wird mithilfe der ActionController Klasse hergestellt Diese ist Bestandteil der ActionPack Bibliothek Ein Controller kapselt eine bestimmte Geschaftslogik und bietet Schnittstellen um mit dieser kontrolliert zu interagieren Diese Schnittstellen werden Actions genannt Ein ublicher Rails Request z B URL servername net controller action enthalt den Namen des anzusprechenden Controllers Dieser ist aquivalent zu dem Klassennamen Weiterhin wird eine spezielle Action aufgerufen diese wird innerhalb der Controller Klasse als Methode dargestellt Uber den eingebauten Routing Mechanismus besteht jedoch die Moglichkeit einen solchen Rails Request nach den eigenen Bedurfnissen anzupassen View Bearbeiten Fur die Prasentationsschicht ist die Klasse ActionView zustandig Diese ist ebenfalls Bestandteil der ActionPack Bibliothek Folgende Ausgabeformate werden zurzeit von Rails unterstutzt HTML XML z B fur XHTML und Web Services JavaScript RJS Templates BinardatenZusatzlich werden die folgenden Templatesysteme angeboten ERB fur X HTML und JavaScript Builder fur XML Haml Sass CoffeeScriptWeiterhin besteht die Moglichkeit den HTTP Header selbst zu manipulieren und so andere Formate an den Client zu senden Middleware RackMerb Sinatra Ramaze und Camping sind wie Rails auch Ruby Frameworks die die Middleware Rack benutzen und somit auch vermischt werden konnen Ab Rails Version 3 sind Rails und Merb fusioniert Literatur BearbeitenDenny Carl Praxiswissen Ruby on Rails 2007Hussein Morsy und Tanja Otto Ruby on Rails 3 1 Galileo Computing 2011 ISBN 978 3 8362 1490 2Rob Orsini Rails Kochbuch 2007Sam Ruby David Thomas und David Heinemeier Hansson Agile Web Development with Rails 4 O Reilly 4 Auflage 2013 ISBN 1 9377 8556 4 Deutsche Ubersetzung der 1 Auflage Agile Webentwicklung mit Rails 2006 ISBN 3 446 40486 4 Stefan Tennigkeit Michael Voigt Ruby on Rails 3 Mit DataMapper I18N amp L10N und Volltextsuche mit Sphinx entwickler press 1 Auflage 2010 ISBN 978 3 86802 026 7Stefan Wintermeyer Ruby on Rails 3 2 Addison Wesley 2012 ISBN 978 3 82732 989 9 Online Version Ralf Wirdemann und Thomas Baustert Rapid Web Development mit Ruby on Rails Hanser 2008 ISBN 3 4464 1498 3Weblinks Bearbeiten nbsp Wikibooks Websiteentwicklung Ruby on Rails Lern und Lehrmaterialien nbsp Wikibooks Tutorial und Nachschlagewerk Lern und Lehrmaterialien Offizielle Website englisch Deutsche Ruby on Rails Seite mit Buchliste und Tutorials Rails for Zombies interaktives Tutorial im Browser englisch Railscasts Tutorial Screencasts zu Ruby on Rails englisch Tutorial Anleitung von Null an englisch Einzelnachweise Bearbeiten rubyonrails org core Memento des Originals vom 5 Dezember 2012 im Webarchiv archive today nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www rubyonrails org Ruby Core Team Release 7 1 2 10 November 2023 abgerufen am 19 November 2023 The rails Open Source Project on Open Hub Languages Page In Open Hub abgerufen am 3 September 2018 github com abgerufen am 6 August 2017 Ruby on Rails is released under the MIT License Riding Rails Rails 1 1 RJS Active Record respond to integration tests and 500 other things Archiviert vom Original am 5 August 2010 abgerufen am 6 Oktober 2012 englisch Riding Rails Rails 1 2 REST admiration HTTP lovefest and UTF 8 celebrations Archiviert vom Original am 12 Juni 2011 abgerufen am 6 Oktober 2012 englisch Rails 2 0 It s done Abgerufen am 6 Oktober 2012 englisch Jo Bager Web Applikationsumgebung Ruby on Rails 2 0 ist fertig Abgerufen am 6 Oktober 2012 Riding Rails Rails 2 1 Time zones dirty caching gem dependencies caching etc Archiviert vom Original am 12 Juni 2011 abgerufen am 6 Oktober 2012 englisch Riding Rails Rails 3 0 It s ready Abgerufen am 12 April 2012 englisch Rails Weblog Merb gets merged into Rails 3 Abgerufen am 6 Oktober 2012 Riding Rails Rails 3 1 0 has been released 31 August 2011 abgerufen am 12 April 2012 englisch Morsy und Otto 2012 Ruby on Rails 3 1 S 28 Riding Rails Rails 3 2 0 Faster dev mode amp routing explain queries tagged logger store 20 Januar 2012 abgerufen am 12 April 2012 englisch Release Notes Riding Rails Rails 4 0 Final version released 25 Juni 2013 abgerufen am 25 Juli 2013 englisch Release Notes Rails 4 1 0 Spring Variants Enums Mailer previews secrets yml 8 April 2014 abgerufen am 5 August 2014 englisch Release Notes Rails 4 2 Active Job Asynchronous Mails Adequate Record Web Console Foreign Keys 19 Dezember 2014 abgerufen am 21 Dezember 2014 englisch Release Notes Ruby on Rails 5 0 Release Notes Abgerufen am 19 Juli 2016 englisch Release Notes Ruby on Rails 5 1 Release Notes Abgerufen am 31 Januar 2018 englisch Release Notes Rails 5 2 0 FINAL 9 April 2018 abgerufen am 3 August 2018 englisch Release Notes Rails 6 0 Final Release 15 August 2019 abgerufen am 21 Marz 2020 englisch Release Notes Ruby on Rails 6 1 Release Notes 9 Dezember 2020 abgerufen am 29 Mai 2021 englisch Normdaten Sachbegriff GND 7516633 1 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Ruby on Rails amp oldid 228304079