I föregående artikel i detta serie artiklar, vi pratade om vad Sinatra är. I den här artikeln ska vi titta på några verkliga funktionella Sinatra-koder, beröra några Sinatra-funktioner, som alla kommer att utforskas i djupet i kommande artiklar i den här serien.
Innan du kommer igång måste du gå vidare och installera Sinatra. Att installera Sinatra är lika enkelt som alla andra pärlor. Sinatra har några beroenden, men inget större och du bör inte ha några problem med att installera det på någon plattform.
$ gem installera sinatra
Hej världen!
Sinatra-applikationen "Hello world" är chockerande enkel. Inklusive de obligatoriska linjerna, shebang och whitespace, det är bara tre rader. Det här är inte bara en liten del av din applikation, som en controller i en Rails-applikation, det här är hela saken. En annan sak du kanske märker är att du inte behövde köra något som Rails-generatorn för att generera en applikation. Klistra in följande kod i en ny Ruby-fil så är du klar.
#! / usr / bin / env ruby
kräver "rubygems"
kräver "sinatra"
få '/' göra
'Hej världen!'
slutet
Naturligtvis är detta inte ett mycket användbart program, det är bara "Hej världen", men ännu mer användbara applikationer i Sinatra är inte mycket större. Så, hur kör du den lilla webbapplikationen? Något slags komplex script / server kommando? Nej, bara köra filen. Det är bara ett Ruby-program, kör det!
inatra $ ./hello.rb
== Sinatra / 0.9.4 har tagit scenen på 4567 för utveckling med backup från Mongrel
Inte särskilt spännande ännu. Det har startat servern och bundet till port 4567, så fortsätt och pek din webbläsare till http://localhost: 4567/. Det finns ditt "Hej värld" -meddelande. Webbapplikationer har aldrig varit så enkelt i Ruby förut.
Använda parametrar
Så låt oss titta på något lite mer intressant. Låt oss skapa en applikation som hälsar dig med namnet. För att göra detta måste vi använda en parameter. Parametrar i Sinatra är som allt annat - enkelt och enkelt.
#! / usr / bin / env ruby
kräver "rubygems"
kräver "sinatra"
få '/ hej /: namn' gör
"Hej # {params [: name]}!"
slutet
När du har gjort den här ändringen måste du starta om Sinatra-programmet. Döda den med Ctrl-C och kör den igen. (Det finns en väg runt detta, men vi ska titta på det i en framtida artikel.) Nu är parametrarna enkla. Vi har gjort en åtgärd som heter /hello/:name. Den här syntaxen imiterar hur webbadresserna kommer att se ut, så gå till http://localhost: 4567 / hej / ditt namn att se det i aktion.
De /hello delen matchar den delen av webbadressen från det begärde du gjorde, och :namn tar upp all annan text du ger den och lägger den i params hash under nyckeln :namn. Parametrar är bara så enkla. Det finns naturligtvis mycket mer du kan göra med dessa, inklusive regexp-baserade parametrar, men det är allt du behöver i nästan alla fall.
Lägga till HTML
Slutligen, låt oss sprida den här applikationen med lite HTML. Sinatra returnerar vad du får från din URL-hanterare till webbläsaren. Hittills har vi bara returnerat en textsträng, men vi kan lägga till lite HTML där utan problem. Vi kommer att använda ERB här, precis som används i Rails. Det finns andra (utan tvekan bättre) alternativ, men det är kanske det mest kända eftersom det kommer med Ruby och kommer att göra det bra här.
Först kommer Sinatra att visa en vy som heter layout om en finns. Den här layoutvyn bör ha en avkastning påstående. Detta avkastningsförklaring kommer att fånga ut resultatet från den specifika vyn som återges. Detta gör att du enkelt kan skapa layouter. Slutligen har vi en Hej vy, som genererar det verkliga hejmeddelandet. Detta är den vy som gjordes med hjälp av erb: hej metodsamtal. Du kommer att märka att det inte finns några separata visningsfiler. Det kan finnas, men för en så liten applikation är det bäst att hålla all koden i en enda fil. Även om vyerna är lutade i slutet av filen.
#! / usr / bin / env ruby
kräver "rubygems"
kräver "sinatra"
få '/ hej /: namn' gör
@name = params [: name]
erb: hej
slutet
__SLUTET__
@@ layout
@@ HallåHej !
Och där har du det. Vi har en komplett, funktionell hej världsapplikation i cirka 15 kodrader inklusive vyerna. Följande artiklar, vi tittar närmare på rutterna, hur du kan lagra och hämta data och hur du får bättre vyer med HAML.