Im vorherigen Artikel in diesem ArtikelserieWir haben darüber gesprochen, was Sinatra ist. In diesem Artikel werden wir uns einige echte funktionale Sinatra-Codes ansehen und einige Sinatra-Funktionen ansprechen, die in den kommenden Artikeln dieser Reihe ausführlich behandelt werden.
Bevor Sie beginnen, müssen Sie Sinatra installieren. Die Installation von Sinatra ist so einfach wie jedes andere Juwel. Sinatra hat einige Abhängigkeiten, aber nichts Wichtiges, und Sie sollten keine Probleme haben, es auf einer Plattform zu installieren.
$ gem installiere sinatra
Hallo Welt!
Die Sinatra "Hello World" -Anwendung ist schockierend einfach. Ohne die erforderlichen Zeilen, Shebang und Whitespace sind es nur drei Zeilen. Dies ist nicht nur ein kleiner Teil Ihrer Anwendung, wie ein Controller in einer Rails-Anwendung, sondern das Ganze. Eine andere Sache, die Sie möglicherweise bemerken, ist, dass Sie nichts wie den Rails-Generator ausführen mussten, um eine Anwendung zu generieren. Fügen Sie einfach den folgenden Code in eine neue Ruby-Datei ein und fertig.
#! / usr / bin / env ruby
erfordern 'Rubygems'
erfordern 'Sinatra'
get '/' do
'Hallo Welt!'
Ende
Natürlich ist dies kein sehr nützliches Programm, es ist nur "Hallo Welt", aber noch nützlichere Anwendungen in Sinatra sind nicht viel größer. Wie führen Sie diese winzige Webanwendung aus? Eine Art Komplex Skript / Server Befehl? Nein, führen Sie einfach die Datei aus. Es ist nur ein Ruby-Programm, führen Sie es aus!
inatra $ ./hello.rb
== Sinatra / 0.9.4 hat auf 4567 die Bühne für die Entwicklung mit Backup von Mongrel betreten
Noch nicht sehr aufregend. Der Server wurde gestartet und an Port 4567 gebunden. Zeigen Sie also mit Ihrem Webbrowser auf http://localhost: 4567/. Es gibt Ihre "Hallo Welt" Nachricht. Webanwendungen waren in Ruby noch nie so einfach.
Parameter verwenden
Schauen wir uns also etwas Interessanteres an. Lassen Sie uns eine Anwendung erstellen, die Sie mit Namen begrüßt. Dazu müssen wir einen Parameter verwenden. Parameter in Sinatra sind wie alles andere - einfach und unkompliziert.
#! / usr / bin / env ruby
erfordern 'Rubygems'
erfordern 'Sinatra'
get '/ hello /: name' do
"Hallo # {params [: name]}!"
Ende
Sobald Sie diese Änderung vorgenommen haben, müssen Sie die Sinatra-Anwendung neu starten. Töte es mit Strg-C und starte es erneut. (Es gibt einen Weg, dies zu umgehen, aber wir werden uns das in einem zukünftigen Artikel ansehen.) Nun sind die Parameter einfach. Wir haben eine Aktion namens aufgerufen /hello/:name. Diese Syntax ahmt nach, wie die URLs aussehen werden. Gehen Sie also zu http://localhost: 4567 / hallo / Dein Name um es in Aktion zu sehen.
Das /hello Teil stimmt mit dem Teil der URL aus der von Ihnen gestellten Anfrage überein, und :Name nimmt jeden anderen Text auf, den Sie ihm geben, und fügt ihn in das Feld ein params Hash unter dem Schlüssel :Name. Parameter sind einfach so einfach. Mit diesen können Sie natürlich noch viel mehr tun, einschließlich regexp-basierter Parameter, aber das ist in fast allen Fällen alles, was Sie brauchen.
HTML hinzufügen
Lassen Sie uns zum Schluss diese Anwendung mit ein wenig HTML aufpeppen. Sinatra gibt alles, was es von Ihrem URL-Handler erhält, an den Webbrowser zurück. Bisher haben wir nur eine Textzeichenfolge zurückgegeben, aber wir können dort problemlos HTML-Code hinzufügen. Wir werden hier ERB verwenden, genau wie es in Rails verwendet wird. Es gibt andere (wohl bessere) Optionen, aber dies ist vielleicht die bekannteste, da sie mit Ruby geliefert wird und hier gut funktioniert.
Zunächst rendert Sinatra eine Ansicht mit dem Namen Layout wenn einer existiert. Diese Layoutansicht sollte eine haben Ausbeute Erklärung. Diese Yield-Anweisung erfasst die Ausgabe der spezifischen Ansicht, die gerendert wird. Auf diese Weise können Sie sehr einfach Layouts erstellen. Endlich haben wir eine Hallo Ansicht, die die eigentliche Hallo-Nachricht generiert. Dies ist die Ansicht, die mit dem gerendert wurde erb: hallo Methodenaufruf. Sie werden feststellen, dass es keine separaten Ansichtsdateien gibt. Es kann sein, aber für eine so kleine Anwendung ist es am besten, den gesamten Code in einer einzigen Datei zu speichern. Die Ansichten werden jedoch am Ende der Datei angezeigt.
#! / usr / bin / env ruby
erfordern 'Rubygems'
erfordern 'Sinatra'
get '/ hello /: name' do
@name = params [: name]
erb: hallo
Ende
__ENDE__
@@ Layout
@@ HalloHallo !
Und da hast du es. Wir haben eine vollständige, funktionale Hallo-Welt-Anwendung in ca. 15 Codezeilen einschließlich der Ansichten. In den folgenden Artikeln werden wir uns die Routen genauer ansehen, wie Sie Daten speichern und abrufen können und wie Sie mit HAML bessere Ansichten erzielen.