2016-07-13 14 views
0

Ich habe versucht zu verstehen, wie Sinatra funktioniert, und vor kurzem habe ich versucht herauszufinden, wie Sinatra den Server nach der Verarbeitung der Routen startet, wenn es am Anfang der Datei erforderlich ist. Ich war auf der Suche auf this tutorial und sie am Ende mit einem Beispiel-App wie folgt aussehen (ihre Version von sinatra heißt nancy):Wie startet Sinatra den Server?

# app.rb 
# run with `ruby app.rb` 
require "./nancy" 

get "/" do 
    "Hey there!" 
end 

Rack::Handler::WEBrick.run Nancy::Application, Port: 9292 

Ich frage mich, wie Sie nicht, dass die letzte Zeile in sinatra enthalten sind gezwungen.

Antwort

-2

Um eine Sinatra-Anwendung zu bedienen, müssen Sie nur die Shell ruby app.rb ausführen.

app.rb

# install sinatra gem before everything 
# by typing `gem install sinatra` 
# on shell. or add sinatra to your Gemfile 
# then execute bundle install 

require 'sinatra' 

get '/' do 
    "Hey there" 
end 

Dann werden Sie solche Ausgabe

$ ruby app.rb 
Puma 2.11.3 starting... 
* Min threads: 0, max threads: 16 
* Environment: development 
* Listening on tcp://localhost:4567 
== Sinatra (v1.4.7) has taken the stage on 4567 for development with backup from Puma 

Das Tutorial sehen Sie ist ansprechend habe nicht über die tatsächliche sinatra - dort Autor gebaut sein/ihre eigene Pseudo-Sinatra. Übrigens, Ruby auch ein microframework namens nancy

Um seine/ihre Pseudo-Sinatra erfolgreich ausführen, müssen Sie das Tutorial von Anfang bis Ende zu folgen.

+0

Dies beantwortet die Frage nicht. Wie startet Sinatra webrick? – thesecretmaster

+0

Überprüfen Sie den Code :) https://github.com/sinatra/sinatra/blob/v1.4.7/lib/sinatra/main.rb#L25 https://github.com/sinatra/sinatra/blob /v1.4.7/lib/sinatra/base.rb#L1959 – marmeladze

+0

Ich sah, aber konnte es nicht herausfinden, weshalb ich fragte – thesecretmaster

1

Sinatra ist, dass ein at_exit Rückruf durch die Definition, siehe main.rb

Diese im Grunde sagt, dass „wenn der Ruby-Skript ausgeführt wird und beendet dann die Sinatra App laufen!“

Weitere Informationen finden Sie unter ruby docs for at_exit!