2010-10-06 1 views
5

Ich habe eine Array-Erweiterung-Methode, die ich in meinem Rails 3 Projekt verwenden möchte. Wo soll es leben?Best Practice zum Hinzufügen von Ruby-Erweiterungsmethoden zu Rails 3?

Ich habe eine App/Klassen, wo ich es ursprünglich (array_extensions.rb), und in meiner config/application.rb lade ich den Pfad: config.autoload_paths += %W(#{Rails.root}/app/classes). Wenn ich jedoch auf rails console lese, wird die Erweiterung nicht geladen.

Gibt es einen vordefinierten Platz sollte ich meine Erweiterungsmethoden für Rails 3? Oder ein vordefinierter Weg, sie hinzuzufügen? Ich weiß, dass Rails eigene Erweiterungsmethoden für Array hat. Sollte ich meinen zu active_support/core_ext/array/conversions.rb hinzufügen?

Was ist die beste Vorgehensweise für Rails 3?

Antwort

11

Der bessere Weg ist, erstellen Sie Ihre Erweiterung in lib/core_ext Verzeichnis zu leicht zu verstehen, wo ist Ihr core_ext.

Nach dem Erstellen eines Initialisierers für diese Datei erforderlich.

+0

Ja, ich habe vergessen zu erwähnen, dass ich auch versucht habe, es in lib zu verschieben, habe aber keinen separaten Ordner für Erweiterungen in Betracht gezogen. Ich vermute, mein Hauptproblem war die Annahme, dass Rails automatisch die Klassenerweiterung laden würde. Stattdessen musste ich noch eine required-Klausel hinzufügen. –

-1

Alle .rb-Dateien in config/initializers werden beim Start in die Umgebung benötigt; Sie sollten Erweiterungen dort hineinlegen.

+2

Aber das bedeutet nicht, dass Sie dort komplizierten Code eingeben sollten. Das ist nur für die Konfiguration oder erfordert externe Dateien. –