I forrige artikkel i dette artikkelserie, vi snakket om hva Sinatra er. I denne artikkelen skal vi se på noen reelle funksjonelle Sinatra-koder, berøre noen få Sinatra-funksjoner, som alle vil bli utforsket i dybden i kommende artikler i denne serien.
Før du kommer i gang, må du gå foran og installere Sinatra. Å installere Sinatra er like enkelt som alle andre perler. Sinatra har noen få avhengigheter, men ikke noe større, og du bør ikke ha noen problemer med å installere den på noen plattform.
$ perle installere sinatra
Hei Verden!
Sinatra-applikasjonen "Hello world" er sjokkerende enkel. Ikke inkludert de nødvendige linjene, shebang og whitespace, det er bare tre linjer. Dette er ikke bare en liten del av applikasjonen din, som en kontroller i en Rails-applikasjon, dette er hele greia. En annen ting du kanskje legger merke til er at du ikke trengte å kjøre noe som Rails-generatoren for å generere et program. Bare lim inn følgende kode i en ny Ruby-fil, så er du ferdig.
#! / usr / bin / env ruby
krever "rubygems"
krever 'sinatra'
få '/' gjøre
'Hei Verden!'
slutt
Selvfølgelig er dette ikke et veldig nyttig program, det er bare "Hallo verden", men enda mer nyttige applikasjoner i Sinatra er ikke mye større. Så, hvordan kjører du denne lille webapplikasjonen? En slags kompleks script / server kommando? Nei, bare kjør filen. Det er bare et Ruby-program, kjør det!
inatra $ ./hello.rb
== Sinatra / 0.9.4 har tatt scenen på 4567 for utvikling med sikkerhetskopi fra Mongrel
Ikke veldig spennende ennå. Det er startet serveren og bundet til port 4567, så fortsett og pek nettleseren din til http://localhost: 4567/. Det er din "Hello world" -melding. Nettapplikasjoner har aldri vært så enkle i Ruby før.
Bruke parametere
Så la oss se på noe litt mer interessant. La oss lage et program som hilser deg med navn. For å gjøre dette, må vi bruke en parameter. Parametere i Sinatra er som alt annet - enkelt og greit.
#! / usr / bin / env ruby
krever "rubygems"
krever 'sinatra'
få '/ hallo /: navn' gjøre
"Hei # {params [: name]}!"
slutt
Når du har gjort denne endringen, må du starte Sinatra-programmet på nytt. Drep den med Ctrl-C og kjør den igjen. (Det er en vei rundt dette, men vi får se på det i en fremtidig artikkel.) Nå er parameterne enkle. Vi har laget en handling som heter /hello/:name. Denne syntaksen imiterer hvordan URL-ene vil se ut, så gå til http://localhost: 4567 / hallo / Ditt navn å se det i aksjon.
De /hello delen samsvarer med den delen av nettadressen fra forespørselen du har laget, og :Navn vil absorbere all annen tekst du gir den og legge den i params hasj under nøkkelen :Navn. Parametere er bare så enkle. Det er selvfølgelig mye mer du kan gjøre med disse, inkludert regexp-baserte parametere, men dette er alt du trenger i nesten alle tilfeller.
Legger til HTML
Til slutt, la oss sprite denne applikasjonen med litt HTML. Sinatra vil returnere hva det blir fra URL-behandleren din til nettleseren. Så langt har vi bare returnert en tekststreng, men vi kan legge til noe HTML der uten problemer. Vi bruker ERB her, akkurat som brukes i Rails. Det er andre (uten tvil bedre) alternativer, men dette er kanskje det mest kjente, ettersom det kommer med Ruby, og vil gjøre det bra her.
Først vil Sinatra gjengi et syn som heter oppsett hvis en eksisterer. Denne layoutvisningen skal ha en utbytte uttalelse. Denne avkastningserklæringen vil fange ut output fra den spesifikke visningen som blir gjengitt. Dette lar deg lage oppsett veldig enkelt. Endelig har vi en Hallo visning, som genererer den faktiske Hei-meldingen. Dette er utsikten som ble gjengitt ved hjelp av erb: hallo metodeanrop. Du vil merke at det ikke er separate visningsfiler. Det kan være, men for en så liten applikasjon er det best å oppbevare all koden i en enkelt fil. Skjønt visningene er skjult på slutten av filen.
#! / usr / bin / env ruby
krever "rubygems"
krever 'sinatra'
få '/ hallo /: navn' gjøre
@name = params [: name]
erb: hallo
slutt
__SLUTT__
@@ oppsett
@@ HalloHei !
Og der har du det. Vi har en komplett, funksjonell hei verden applikasjon i omtrent 15 kodelinjer inkludert visningene. Følgende artikler skal vi se nærmere på rutene, hvordan du kan lagre og hente data og hvordan du kan få bedre visninger med HAML.