6 Stimmen

Mit Rails, wo sollte ich html-Schnipsel setzen? Ich möchte keine Teilausschnitte, aber ich möchte, dass sie während der Entwicklung nachgeladen werden

Da ich faul bin (und DRY-Code mag), bin ich der Typ, der ein paar kleine Wrapper für wiederkehrendes HTML-Markup schreiben wird. Die von Rails bereitgestellten sind bereits gut, aber manchmal habe ich etwas etwas spezifischeres, von dem ich weiß, dass ich es immer und immer wieder wiederholen werde.

In manchen Situationen kann ein Partial die Lösung sein, aber manchmal werde ich das Snippet einfach viel zu oft aufrufen, um den Overhead der Verwendung von Partials zu rechtfertigen.

Im Moment erstelle ich eine Datei helpers/html_helper.rb und füge sie dort ein. Das Problem ist, dass die Hilfsprogramme während der Entwicklung nicht dynamisch pro Anfrage neu geladen werden. Also jedes Mal, wenn ich mein Snippet oder den Code um ihn herum ändere, muss ich den Server beenden und neu starten.

Zugegeben, es ist nur ein 5-Sekunden-Prozess, aber ich liebe den Komfort von Rails, einfach zu entwickeln und dann den Browser zu aktualisieren. So würde ich gerne, dass für meine Markup-Snippets als gut haben.

Hinweis: Das Einfügen von "unloadable" in das Hilfsmodul funktioniert nicht.

1voto

Patrick McKenzie Punkte 3996

Gute Frage! Das ist eine Technik, die ich häufiger anwenden sollte.

    #I go in environment.db (presumably it will work in one of the per-environment files, too.)
    Dependencies.explicitly_unloadable_constants << 'NameOfHelperToReloadHere'

Das Array ist übrigens zu Beginn leer, zumindest bei meiner Installation. (Überprüft über die Konsole.)

Ich habe dies lokal getestet und es funktioniert bei mir, zumindest auf Rails 2.0.2. Der Hauptverdienst für diese Lösung gehört dieser Herr .

1voto

Steropes Punkte 4450

Wenn Sie sie in application_helper.rb stecken, werden sie jedes Mal geladen und sind für alle Ihre Ansichten verfügbar. Dies ist jedes Mal im Entwicklungsmodus geladen (oder zumindest habe ich keine Probleme aufgetreten).

In der Regel erstelle ich kleine Hilfsprogramme, die ich auf der gesamten Website verwende (z. B. sortierbare Tabellenüberschriften) und die dieselbe Logik verwenden.

1voto

Daniel Beardsley Punkte 19137

Dies sollte ALLE Helfer bei jeder Anfrage neu laden (vorausgesetzt, Sie haben sich an die Standard-Namenskonventionen gehalten)

#Put this in config/environments/development.rb
ActiveSupport::Dependencies.explicitly_unloadable_constants.concat(Dir.glob("#{RAILS_ROOT}/app/helpers/**/*.rb").map {|file| File.basename(file, '.rb').camelize})

Oder wenn Sie eine ältere Version von Rails verwenden (2.0.2 oder früher, glaube ich)

#Put this in config/environments/development.rb
Dependencies.explicitly_unloadable_constants.concat(Dir.glob("#{RAILS_ROOT}/app/helpers/**/*.rb").map {|file| File.basename(file, '.rb').camelize})

Funktioniert bei mir in RoR 2.1.1


Aktualisierung: geändertes oberes Snippet, um 'ActiveSupport::' einzuschließen, muss falsch von meinem Code kopiert / eingefügt haben.

0voto

Christoph Schiessl Punkte 6778

Es ist keine wirkliche Lösung, aber Sie könnten Tests (TestUnit, RSpec oder was auch immer) verwenden, um sicherzustellen, dass Ihre Hilfsprogramme wie erwartet funktionieren. Auf diese Weise wären Sie nicht so sehr auf das automatische Nachladen Ihrer Helfer angewiesen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X