15 Rails mit Plug-ins erweitern
Sie müssen das Rad nicht neu erfinden, wenn Sie Erweiterungen für Rails nutzen können.
In diesem Kapitel möchten wir Ihnen zunächst das Konzept von Plug-ins in Ruby on Rails vorstellen, bevor wir einzelne Plug-ins erläutern. Die meisten davon werden wir in einer eigenen Mini-Railsapplikation vorstellen, damit Sie die Beispiele besser nachvollziehen können.
15.1 Plug-ins Grundlagen
Einer der Gründe für den großen Erfolg von Rails ist die Möglichkeit, Rails durch Plug-ins zu erweitert. Vielleicht kennen Sie das von Photoshop, das auch durch Plug-ins leicht ergänzt werden kann.
DRY-Prinzip
Im Prinzip kann man alles, was die Plug-ins liefern, auch selbst entwickeln. Aber warum etwas entwickeln, wofür es bereits fertige Lösungen gibt? Damit würden wir doppelte Arbeit machen und deshalb im wahrsten Sinne des Wortes gegen das DRY-Prinzip (»Don't repeat yourself«) verstoßen, das besagt, dass es nach Möglichkeit zu vermeiden ist, Code doppelt zu entwickeln.
Über 1.000 Plug-ins
In Rails gibt es inzwischen über 1.000 veröffentliche Plug-ins (siehe http://railsbuch.de/urls/8 und http://railsbuch.de/urls/9 ).
Rails 2 und Plug-ins |
In Rails 2 wurden einige Funktionen aus dem Kern (Core) entfernt und als Plug-ins zur Verfügung gestellt, wie z. B. acts_as_list , acts_as_tree und in_place_editing . |
Plug-ins werden sehr stark weiterentwickelt. Das heißt, es kann vorkommen, dass ein hier vorgestelltes Plug-in zwischenzeitlich in einer neueren Version vorliegt. Sollte das ein oder andere nicht so funktionieren, wie hier beschrieben, schauen Sie bitte in der Dokumentation zu der jeweiligen aktuellen Version des Plug-ins nach.
Rails-Plug-ins werden in der Regel immer pro Projekt im Verzeichnis vendor/plugins installiert.
script/plugin
Für die Verwaltung von Plug-ins steht der Befehl ruby script/plugin mit folgenden Optionen zur Verfügung:
Befehl | Beschreibung |
ruby script/plugin install | Installiert das angegebene Plug-in. |
ruby script/plugin remove | Entfernt das angegebene Plug-in. |
ruby script/plugin update | Aktualisiert die installierten Plug-ins. |
ruby script/plugin list | Zeigt alle verfügbaren Plug-ins an (siehe auch den nächsten Befehl). |
ruby script/plugin sources | Zeigt eine Liste aller Quellen an, aus der die Liste der verfügbaren Plug-ins gelesen wird. |
ruby script/plugin source | Fügt die angegebene URL der Liste der Quellen hinzu. |
ruby script/plugin unsource | Entfernt eine Quelle. |
ruby script/plugin discover | Schlägt über 50 Quellen für Plug-ins vor. Man kann entscheiden, welche der eigenen Quell-liste hinzugefügt wird. |
Tabelle Befehle zum Verwalten von Plug-ins
Plug-ins installieren und deinstallieren
script/plugin install
Sie können ein Plug-in mit dem Befehl ruby script/plugin install, dem Sie den Namen des zu installierenden Plug-ins oder die URL des Plug-ins übergeben, installieren. Wenn Sie eine URL angeben, so wird das Plug-in von der angegebenen URL geladen. Wird hingegen nur der Name des Plug-ins übergeben, so wird in allen Quellen (siehe Abschnitt 15.1.2), die dem System bekannt sind, nach dem Plug-in gesucht.
Subversion für einige Plug-ins erforderlich |
Für einige Plug-ins ist das Tool Subversion erforderlich, um sie zu installieren. |
Im folgenden Beispiel wird das Plug-in acts_as_list installiert:
ruby script/plugin install acts_as_list + ./acts_as_list/README + ./acts_as_list/init.rb + ./acts_as_list/lib/active_record/acts/list.rb + ./acts_as_list/test/list_test.rb
Subversion
Falls Ihr Projekt unter Subversion läuft, können Sie Plug-ins auch mit der Option -x installieren, damit es als External Repository installiert wird.
ruby script/plugin install -x acts_as_list
Vor- und Nachteile
Dies hat zwei Vorteile. Zum einen werden Ihrem Repository nicht sämtliche Dateien des Plug-ins hinzugefügt, sondern nur ein Verweis darauf gespeichert. Zum anderen wird bei jedem Aufruf von svn update überprüft, ob eine neue Version im (externen) Repository vorhanden ist. Der Nachteil ist, das wenn das externe Repository des Plug-ins wegen einer Störung nicht erreichbar ist, u. a. die Befehle svn update und svn checkout fehlschlagen.
Abbildung Verzeichnisstruktur von vendor
init.rb
Im Verzeichnis vendor/plugins wurde das Verzeichnis acts_as_list angelegt. Nach der Installation eines Plug-ins müssen Sie Ihre Rails-Anwendung neu starten, damit die Datei init.rb des Plug-ins ausgeführt wird. Diese Datei wird für jedes Plug-in beim Start der Rails-Anwendung ausgeführt. Sie wird genutzt um Code einzubinden, der von dem Plug-in benötigt wird. Bei vielen Plug-ins ist die init.rb jedoch leer.
Plug-ins listen
Der Befehl ruby script/plugin list listet alle Plug-ins der dem System bekannten Quellen. Übergeben Sie --local, werden alle lokal installierten Plug-ins gelistet.
Plug-ins updaten
Mit dem Befehl ruby script/plugin update können Sie die bereits installierten Plug-ins auf den neuesten Stand bringen.
Plug-ins deinstallieren
Mit dem Befehl ruby script/plugin remove, dem Sie ein oder mehrere Plug-in-Namen übergeben können, deinstallieren Sie Plug-ins:
ruby script/plugin remove acts_as_list
Plug-ins als RubyGems-Paket installieren |
Manche Plug-ins, wie z. B. »Gravatar« (siehe Abschnitt 15.2.3) liegen als RubyGems -Pakete vor. Das hat den Vorteil, dass diese Plug-ins global verfügbar sind und nicht pro Applikation installiert werden müssen. Es hat aber den Nachteil, dass diese Plug-ins auch auf dem Produktionsserver installiert werden müssen. RubyGems -Pakete werden nicht mit dem ruby script/plugin -Befehl installiert, sondern über gem install . Rails selbst ist z. B. auch ein RubyGems -Paket (siehe Website http://rubyforge.org). |
Plug-ins-Quellen verwalten
Quelle hinzufügen
Mit dem Befehl ruby script/plugin source können Sie eine Quelle hinzufügen, indem Sie die URL als Parameter übergeben. Die Quelle http://svn.techno-weenie.net/projects/plugins enthält z. B. zahlreiche Plug-ins. Anstatt nun bei der Installation eines Plug-ins jedes Mal die komplette URL anzugeben, wie z. B.
ruby script/plugin install http://svn.techno-weenie.net/\ projects/plugins/restful_authentication
kann man auch zunächst die Quelle mit
ruby script/plugin source http://svn.techno-weenie.net/\ projects/plugins
hinzufügen und anschließend das gewünschte Plug-in über sein Namen installieren:
ruby script/plugin install restful_authentication.
Quelle entfernen
Wenn Sie eine Quelle wieder entfernen möchten, übergeben Sie dem Befehl ruby script/plugin unsource die URL der zu entfernenden Quelle.
ruby script/plugin unsource \ http://svn.techno-weenie.net/projects/plugins
Quellen auflisten
Der Befehl ruby script/plugin discover listet alle dem System bekannten Repositories bzw. Quellen für Plug-ins auf. Werden neue Quellen gefunden, wird zu jeder abgefragt, ob Sie sie hinzufügen möchten oder nicht. Da es inzwischen über 50 Quellen gibt, ist die Verwendung dieses Befehls kaum praktikabel.
ruby script/plugin discover Add http://www.agilewebdevelopment.com/plugins/? [Y/n] n Add http://expressica.com/plugins/? [Y/n] n Add http://soen.ca/svn/projects/rails/plugins/? [Y/n] n Add http://technoweenie.stikipad.com/plugins/? [Y/n] n ...
Mit dem Befehl ruby script/plugin discover -l werden allen Quellen (ohne Rückfragen) aufgelistet.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.