Ich entwickle eine Rails3-Engine-Anwendung, und ich möchte Haml für die Ansichten verwenden.
Zuerst habe ich das zur Engine Gemfile hinzugefügt:
%Vor%Während ich meine Engine testete, funktionierte es OK (Ich habe Ссылка verwendet, um den Edelstein zu erzeugen und ihn mit dem zu testen Dummy-Anwendung).
Meine Probleme begannen, als ich versuchte, die Engine in einer echten Rails-Anwendung zu verwenden. Die Anwendung hat keinen Edelstein "haml" auf ihrer eigenen Gemfile, und so initiierte sie Haml nicht, so dass ich Template nicht gefundene Fehler erhielt, da sie nicht nach den .haml Views suchte. Ich dachte, dass es ausreichen würde, wenn Haml von der Engine verlangt würde, dass es auch von der Rails-Anwendung benötigt wird.
Was ich im Moment gemacht habe, war, eine config / initializers / haml.rb in der Engine mit diesem Code hinzuzufügen:
%Vor%Es funktioniert jetzt, aber ich frage mich, ob das wirklich ein guter Weg ist, es zu tun. Warum ruft Rails nicht die "init.rb" -Datei von Haml auf und initialisiert so Haml korrekt, indem Sie einfach "haml" in die Engine-Gemdatei einfügen?
Zwei Dinge sind notwendig. Zuerst in der .gemspec:
%Vor%Und in deiner lib / gem_name.rb:
%Vor% Und dann bundle
sowohl in den gem- als auch in den app-Verzeichnissen ausführen.
Ich denke, Sie müssen haml in die Engine-Gemspec als Abhängigkeit setzen, damit Bundler haml in der Zielanwendung installiert (und in Gemfile.lock angezeigt wird). Etwas wie das:
%Vor%Ich habe das gerade an einer meiner Motoren getestet. Ohne die Abhängigkeit in der .gemspec wurde haml nicht in der Ziel-App installiert (nicht in Gemfile.lock). Nachdem ich der Gemspec haml als Abhängigkeit hinzugefügt habe, wird es angezeigt:
%Vor%Wenn du Juwelier benutzt, fügt es die Abhängigkeiten automatisch zur gemspec hinzu, basierend auf dem, was in deiner Gemfile ist. Es fügt sogar eine Entwicklungsabhängigkeit hinzu, wenn du die Gruppe in deiner Gemfile definiert hast. Ich habe mich nur kurz mit enginex beschäftigt, also weiß ich nicht, ob es eine ähnliche Rake-Aufgabe zum Aufbau der Gemspec gibt.
Dies könnte helfen, einige Dinge zu klären:
Tags und Links ruby-on-rails-3 ruby-on-rails rails-engines haml