Wie mounte ich eine Sinatra-Anwendung in einer anderen Sinatra-App?

9

Ich versuche, eine Sinatra-Anwendung zu schreiben, die Komponenten zusammen gruppiert (ähnlich wie Controller). Also für die "Blog" verwandten Dinge, möchte ich eine App namens Blog mounted bei /blog . Alle Routen, die in der Blog -App enthalten sind, wären relativ zu ihrem gemounteten Pfad, also könnte ich einfach eine index Route definieren, ohne den Mount-Pfad in der Route angeben zu müssen.

Ich habe das ursprünglich mit einer config.ru-Datei und map in Bezug auf die Routen zu den verschiedenen Apps gehandhabt. Das Problem dabei war, dass ich verschiedene Sinatra-Edelsteine ​​/ Erweiterungen / Helfer benutzte, die in allen Apps enthalten sein mussten, also gab es viel doppelten Code.

Wie kann ich eine Sinatra-App innerhalb eines anderen mounten, so dass die in der App definierten Routen relativ zum Standort der App sind? Wenn dies nicht sofort möglich ist, können Sie ein Codebeispiel zeigen, wie dies geschehen könnte?

Hier ist ein vereinfachtes Beispiel, wie es aussehen könnte:

%Vor%     
Andrew 16.07.2012, 00:19
quelle

1 Antwort

3

Sehen Sie sich Ссылка an, das einige Ideen zum Namespacing enthält.

Ich persönlich würde die config.ru mit zugeordneten Routen verwenden. Wenn Sie wirklich in diesem Bereich sind zwischen "sollte dies eine separate App sein oder ist es nur hilfreich, um es so zu organisieren" erlaubt dies, und später können Sie noch eine der Apps selbst farmen, ohne den Code zu ändern (oder nur ein wenig). Wenn du feststellst, dass es viel doppelten Setup-Code gibt, würde ich so etwas tun:

%Vor%

Hier ist ein Zitat von Sinatra Up and Running :

  

Nicht nur Einstellungen, sondern jeder Aspekt einer Sinatra-Klasse wird von ihren Unterklassen geerbt. Dazu gehören definierte Routen, alle Fehlerhandler, Erweiterungen , Middleware usw.

Es gibt einige gute Beispiele für die Verwendung dieser Technik (und anderer). Da ich im schamlosen Plug-Modus bin empfehle ich es, obwohl ich damit nichts zu tun habe! :)

    
iain 02.07.2013, 18:31
quelle

Tags und Links