Ich verwende Ruby on Rails 3 und möchte benutzerdefinierten und gemeinsam genutzten Code in ein Modul verschieben.
- Welche Syntax soll ich zum Schreiben des Modulcodes verwenden?
- In welchem Ordner meiner Anwendung muss ich die Moduldatei ablegen?
- Wie muss ich dieses Modul in eine oder mehrere Controller-Klassen aufnehmen?
- Welche andere Aktion muss ich, falls vorhanden, an einer beliebigen Stelle in meiner Anwendung verwenden?
- Wie kann ich Methoden im Modul aus meiner Anwendung aufrufen?
Danke im Voraus.
ruby-on-rails-3
module
user502052
quelle
quelle
Antworten:
Zu 1. Ein Modul wird erstellt / geöffnet, indem einfach gesagt wird:
Zu 2. Der
lib
Ordner. Wenn Sie Ihre Module imlib
Ordner organisieren möchten , können Sie sie selbst in Module einfügen. Wenn Sie beispielsweise einen Unterordnersuper_modules
möchten, werden Ihre Module wie folgt definiert:Bis 3./5. Wenn Sie das Modul in eine Klasse aufnehmen, können Sie die Modulmethoden einfach so aufrufen, als wären sie in der Klasse definiert:
Stellen Sie zunächst sicher, dass Ihr Modul in jeder Klasse Ihrer Anwendung wirklich benötigt wird. Wenn dies nicht der Fall ist, ist es sinnvoll, es nur dort einzuschließen, wo es benötigt wird, um die Klassen, die es sowieso nicht benötigen, nicht aufzublähen. Wenn Sie das Modul wirklich überall haben möchten, sehen Sie sich die Klassenhierarchie Ihrer Klassen in der App an. Möchten Sie das Modul in allen Modellen? Sie können ActiveRecord :: Base öffnen und dort Ihr Modul hinzufügen.
quelle
lib
Ordner, ein wichtiger Hinweis ist Rails3 zu ermöglichen , in die Zeile Kommentar-config\application.rb
fürconfig.autoload_paths
- lesen zB stackoverflow.com/questions/1073076/rails-lib-modules-and ... Hinweis Außerdem müssen Sie darauf achten, einen Dateinamen für Ihr Modul zu verwenden, der mit dem Modulnamen selbst übereinstimmt. Wenn Sie es also speichernlib/test/my_module.rb
, müssen Sieinclude Test::MyModule
- für weitere Details siehe stackoverflow.com/questions/4073856/rails-3-autoloadapp/models
wenn der Code Zugriff auf andere Modelle benötigt. Wenn Ihr Code wirklich eine 'Bibliothek' ist und für sich allein existieren kann, ich Schlagen Sie vor, einen Edelstein zu verkaufen. Beispiele finden Sie unter github.com/shageman/the_next_big_thingA> 1. Sie können dieselbe Syntax wie jede andere Ruby-Klasse verwenden. Zum Beispiel definiere ich ein VehicleClassifer-Modul, das die classify_vehicle-Methode verwendet, um ein Fahrzeug basierend auf der Anzahl der Räder zu klassifizieren, die es als Eingabe empfängt.
A> 2. Module werden normalerweise im Ordner / lib gespeichert.
Fragen 3,4,5 haben mehr oder weniger die gleiche Antwort. Sie können verwenden
In der Klasse verwenden Sie das Modul und haben Zugriff auf alle Methoden des Moduls.
Falls Sie ein Modul in Ihrer gesamten App verwenden müssen, können Sie es in Ihren Anwendungscontroller aufnehmen.
quelle
ApplicationHelper
?