Im vorherigen Artikel in dieser Artikelserie haben wir darüber gesprochen, was Sinatra ist. In diesem Artikel werden einige echte funktionale Sinatra-Codes vorgestellt, wobei einige Sinatra-Funktionen behandelt werden, 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 bei jedem anderen Juwel. Sinatra hat ein paar Abhängigkeiten, aber nichts Wichtiges, und Sie sollten keine Probleme damit haben, es auf einer Plattform zu installieren.
$ gem install sinatra
Die Sinatra "Hallo Welt" -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 vielleicht 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 Sie sind fertig.
#! / usr / bin / env ruby
Benötige 'Rubygems'
Benötige '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ühre 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 Entwicklungsstufe 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. Noch nie waren Webanwendungen in Ruby so einfach.
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
Benötige 'Rubygems'
Benötige 'Sinatra'
get '/ hallo /: 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 Ausweg, aber wir werden ihn in einem zukünftigen Artikel untersuchen.) Nun sind die Parameter einfach. Wir haben eine Aktion namens gemacht / hallo /: name. Diese Syntax imitiert, wie die URLs aussehen werden http: // localhost: 4567 / hallo / dein name um es in Aktion zu sehen.
Das /Hallo Teil entspricht dem Teil der URL aus der Anfrage, die Sie gemacht haben, und :Name absorbiert jeden anderen Text, den du gibst, und setzt ihn in das Feld params Hash unter dem Schlüssel :Name. Parameter sind so einfach. Natürlich können Sie damit noch viel mehr tun, einschließlich regexp-basierter Parameter, aber dies ist in fast jedem Fall alles, was Sie brauchen.
Lassen Sie uns diese Anwendung abschließend 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 Textfolge zurückgegeben, aber wir können 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 namens Layout wenn es eine gibt. Diese Layoutansicht sollte eine haben Ausbeute Erklärung. Diese Yield-Anweisung erfasst die Ausgabe der bestimmten Ansicht, die gerendert wird. Auf diese Weise können Sie sehr einfach Layouts erstellen. Endlich haben wir ein 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 Anzeigedateien gibt. Es kann vorkommen, 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
Benötige 'Rubygems'
Benötige 'Sinatra'
get '/ hallo /: name' do
@name = params [: name]
erb: hallo
Ende
__ENDE__
@@ Layout
@@ HalloHallo !