Ohne zusätzliche Konfiguration wird Sinatra Vermögenswerte in public
bereitstellen. Für die leere Route sollten Sie das Indexdokument rendern.
Routen sollten einen String
zurückgeben, der zum HTTP-Antworttext wird. File.read
öffnet eine Datei, liest die Datei, schließt die Datei und gibt String
zurück.
Sie können den Helfer send_file
verwenden, um Dateien zu senden.
Dies liefert index.html
von jedem Verzeichnis, das mit den statischen Dateien Ihrer Anwendung konfiguriert wurde.
Sie können sie einfach aus dem öffentlichen Ordner hosten und benötigen keine Routen.
%Vor%In der myapp.rb
%Vor%Link zu einem Unterordner in der Öffentlichkeit
%Vor%Alles in ./public ist von '/whatever/bla.html
aus zugänglich Beispiel:
./public/stylesheets/screen.css
Wird über '/stylesheets/screen.css' erreichbar sein, keine Route erforderlich
Beachten Sie, dass Sie in der Produktion Ihren Webserver index.html
automatisch senden lassen können, damit die Anfrage nie an Sinatra geht. Das ist besser für die Leistung, da Sie nicht nur den Sinatra / Rack-Stack durchlaufen müssen, um statischen Text zu liefern, was Apache / Nginx großartig macht.
In Sinatra sollten Sie statische Dateien aus dem öffentlichen Verzeichnis bereitstellen, wie in den Dokumenten erläutert:
Statische Dateien
Statische Dateien werden aus dem Verzeichnis ./public geliefert. Sie können einen anderen Speicherort angeben, indem Sie die Option public festlegen:
Beachten Sie, dass der Name des öffentlichen Verzeichnisses nicht in der URL enthalten ist. Eine Datei ./public/css/style.css wird als example.com/css/style.css zur Verfügung gestellt.
Das Paket sinatra-assetpack bietet eine ganze Reihe von Features. Syntax ist süß:
%Vor%Während ich immer noch Probleme mit der Rails-Assets-Pipeline habe, habe ich das Gefühl, dass ich mit sinatra-assetpack viel mehr Kontrolle habe - aber meistens funktioniert es nur mit ein paar Zeilen Code.
AKTUALISIERTE ANTWORT :
Ich habe alles oben gebunden ohne Glück, dass ich css laden könnte, js .... etc Inhalt das einzige was geladen wurde ist index.html ... und der Rest ging = & gt; & gt; 404 error
Meine Lösung: App-Ordner sieht so aus.
index.rb
== & gt; & gt; Sinatra-Code geht.
public folder
== & gt; & gt; enthält alles andere ... css, js, blah blah..etc.
Starten Sie jetzt den Server und Sie können problemlos durch statische Seiten navigieren.
%Vor%Fügen Sie unterhalb der Zeile in der Haupt-rb-Datei
hinzu %Vor% Das Einfügen von Dateien in den Ordner public
hat eine Einschränkung. Wenn Sie sich im Root-Verzeichnis befinden, funktioniert '/'
path korrekt, da der Browser den relativen Pfad Ihrer CSS-Datei zum Beispiel /css/style.css
und sinatra die Datei im Verzeichnis public
sucht. Wenn Ihr Standort jedoch beispielsweise /user/create
ist, sucht der Webbrowser nach Ihrer CSS-Datei in /user/create/css/style.css
und schlägt fehl.
Als Workaround habe ich die folgende Umleitung hinzugefügt, um die CSS-Datei korrekt zu laden:
%Vor%Was ist mit dieser Lösung? :
%Vor%Wenn Sie also zum Beispiel zu / Unterverzeichnis / test / navigieren, wird das Unterverzeichnis / test / index.html
geladen