O'Reilly logo

Rails Kochbuch by Rob Orsini

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

First
|
465
Max.
Linie
Max.
Linie
Kapitel 14
KAPITEL 14
Rails über Plugins erweitern
14.0 Einführung
Irgendwann werden Sie Rails um Software von Drittanbietern erweitern wollen, um Auf-
gaben erledigen zu können, für die das Rails-Framework nicht entworfen wurde. Die
bekanntesten Einrichtungen zur Erweiterung von Rails sind RubyGems und Rails-Plugins.
Der RubyGems-Paketmanager ist nicht Rails-spezifisch, sondern vielmehr ein standardi-
siertes System zur Verwaltung und Distribution von Ruby-Paketen oder -Gems. Viele
Gems wurden speziell für den Einsatz mit Rails entwickelt. Um ein Gem in einer Rails-
Anwendung verwenden zu können, müssen Sie es irgendwo in der Anwendung mit einer
include- oder require-Direktive einbinden. Üblicherweise werden Gems mit require-
Anweisungen in
environment.rb oder application.rb eingebunden:
require 'localization'
Seit Rails 0.14 besitzt das Rails-Framework ein eigenes System zur Software-Distribution,
bekannt als Plugins.
Ein Plugin besteht aus einer Reihe von Dateien und Verzeichnissen, die alle eine
bestimmte Rolle bei der Administration oder Nutzung des Plugins erfüllen. Die vielleicht
wichtigste Datei der Plugin-Architektur ist init.rb, die beim Start Ihrer Rails-Anwendung
gelesen wird. Diese Datei wird häufig genutzt, um anderen Code einzubinden, der von
diesem Plugin benötigt wird. Die meisten Plugins besitzen außerdem ein lib-Verzeichnis,
das automatisch in den
$LOAD_PATH der Anwendung eingebunden wird.
Um ein Plugin zu installieren, müssen Sie es einfach nur im Verzeichnis vendor/plugins
speichern und Ihre Anwendung neu starten. Wird eine Rails-Anwendung zum ersten Mal
geladen, wird eine Datei namens init.rb für jedes Plugin im Plugins-Verzeichnis ausge-
führt.
Die Entwicklung von Plugins setzt zwei Bedingungen voraus: Sie sollten über die innere
Funktionsweise des Rails-Frameworks Bescheid wissen und wie man mit Ruby Klassen
00____RailsKochbuch.book Seite 465 Dienstag, 3. Juli 2007 8:13 08
Max.
Linie
Max.
Linie
466
|
Kapitel 14: Rails über Plugins erweitern
Links
während der Laufzeit umdefinieren kann. Ein Generator hilft bei der Initialisierung der
Dateien, die zum Aufbau eines grundlegenden Plugins benötigt werden. Zum Beispiel
erzeugt der Generator für ein Plugin namens acts_as_dictionary die folgenden Dateien
und Verzeichnisse:
$ ./script/generate plugin acts_as_dictionary
create vendor/plugins/acts_as_dictionary/lib
create vendor/plugins/acts_as_dictionary/tasks
create vendor/plugins/acts_as_dictionary/test
create vendor/plugins/acts_as_dictionary/README
create vendor/plugins/acts_as_dictionary/Rakefile
create vendor/plugins/acts_as_dictionary/init.rb
create vendor/plugins/acts_as_dictionary/install.rb
create vendor/plugins/acts_as_dictionary/lib/acts_as_dictionary.rb
create vendor/plugins/acts_as_dictionary/tasks/acts_as_dictionary_tasks.rake
create vendor/plugins/acts_as_dictionary/test/acts_as_dictionary_test.rb
Ein anderer Mechanismus zur Erweiterung von Rails sind die sogenannten Engines. Rails-
Engines lassen sich am besten als vertikale Segmente eines Rails-Frameworks beschreiben,
die in eine vorhandene Anwendung eingebunden werden. Rails-Engines sind eigentlich
nicht mehr populär, werden gelegentlich aber immer noch verwendet und in Form von
Plugins verteilt.
14.1 Plugins von Drittanbietern aufspüren
Problem
Sie benötigen irgendein Feature, das von der aktuellen Rails-Version nicht unterstützt
wird. Sie wollen herausfinden, ob es ein Plugin von einem Drittanbieter gibt, mit dem Sie
Ihre Anwendung erweitern können.
Lösung
Nutzen Sie das fest eingebaute plugin-Skript, um eine Liste aller öffentlich zugänglichen
Subversion-Repositories nach verfügbaren Plugins abzusuchen.
Zuerst verwenden Sie den
discover-Befehl, um sicherzustellen, dass Ihre Liste mit Plugin-
Repositories auch all jene enthält, die auf der Rails-Wiki-Plugins-Seite aufgeführt sind.
Werden neue Repositories entdeckt, werden Sie gefragt, ob Sie diese in Ihre lokale Liste
aufnehmen wollen:
rob@mac:~/fooApp$ ruby script/plugin discover
Add http://svn.techno-weenie.net/projects/plugins/? [Y/n] y
Add http://www.delynnberry.com/svn/code/rails/plugins/? [Y/n] y...
Um eine vollständige Liste der verfügbaren Plugins von den konfigurierten Plugin-Quellen
zu erhalten, nutzen Sie den
list-Befehl des plugin-Skripts:
00____RailsKochbuch.book Seite 466 Dienstag, 3. Juli 2007 8:13 08
Max.
Linie
Max.
Linie
14.1 Plugins von Drittanbietern aufspüren
|
467
Rechts
rob@mac:~/fooApp$ ruby script/plugin list --remote
account_location http://dev.ruby ... plugins/account_location/
acts_as_taggable http://dev.ruby ... plugins/acts_as_taggable/
browser_filters http://dev.ruby ... plugins/browser_filters/
...
Diskussion
Das aktuelle System zur Distribution von Plugins sieht vor, dass die Autoren Links auf das
Subversion-Repository ihrer Plugins im Rails-Wiki (http://wiki.rubyonrails.org/rails/pages/
Plugins) bekannt geben. Der
discover-Befehl nutzt Rubys open-uri.rb-Bibliothek, um die
Seite abzurufen und auf URLs zu untersuchen, die nach Subversion-Repositories aussehen
(die mit svn://, http:// oder https:// anfangen und den String /plugins/ enthalten). Gibt es
irgendwelche Repository-Quellen, die nich in Ihrem Home-Verzeichnis unter ~/.rails-
plugin-sources enthalten sind, dann haben Sie die Möglichkeit, sie aufzunehmen, wenn
das Skript danach fragt.
Ist mindestens ein Plugin-Repository konfiguriert, können Sie es mit dem
list-Befehl
nach verfügbaren Plugins abfragen. Der
list-Befehl sucht standardmäßig nach entfernten
Repositories, aber wenn Sie das explizit ausdrücken wollen, übergeben Sie ihm die
remote-
Option. Um eine Liste der momentan lokal installierten Plugins zurückzugeben, überge-
ben Sie die Option
local an den list-Befehl:
rob@mac:~/fooApp$ ruby script/plugin list --local
Hier eine Zusammenfassung der Befehle, die Sie mit dem Plugin-Skript verwenden kön-
nen, um Ihre Plugin-Repository-Liste zu verwalten und lokal oder entfernt verfügbare
Plugins abzufragen:
discover
Sucht nach Plugin-Repositories, die auf der Rails-Wiki-Plugin-Seite aufgeführt sind
list
Listet die verfügbaren Plugins basierend auf den konfigurierten Quellen auf
source
Fügt manuell ein Plugin-Quell-Repository ein
unsource
Entfernt ein Plugin-Repository aus ~/.rails-plugin-sources
sources
Listet alle momentan konfigurierten Plugin-Repositories auf
Momentan findet
ruby script/plugin list --remote etwas mehr als 100 Plugins, nach-
dem es die Wiki-Plugins-Seite durchforstet hat. Es gibt eine Reihe nicht erkannter Plugins
auf der Seite, da sie kein /plugins/ in ihrer Subversion-URL enthalten. Die Plugins-Seite
sollte eigentlich auch eine kurze Beschreibung für jedes Plugin vorhalten, damit Sie eine
00____RailsKochbuch.book Seite 467 Dienstag, 3. Juli 2007 8:13 08

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required