2016-07-13 9 views
0

私はsinatraがどのように動作しているかを調べようとしていますが、最近では、ファイルの先頭に必要なときに、sinatraがどのようにルートを処理した後にサーバを起動するかを調べようとしています。私はthis tutorialを見ていたし、彼らは例のアプリは、この(シナトラの彼らのバージョンがナンシーと呼ばれている)ように見えるで終わる:私はあなたがシナトラでその最後の行を含めることを余儀なくされていないか疑問に思ってsinatraはどのようにサーバーを起動しますか?

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

get "/" do 
    "Hey there!" 
end 

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

答えて

-2

sinatraアプリケーションを提供するには、シェル上でruby app.rbを実行するだけです。

その後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 

あなたが魅力的できたチュートリアルでは、実際のsinatra話ではありません、このような出力

$ 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 

が表示されます - 内蔵されているが、著者彼/彼女自身の疑似シナトラ。ちなみに、ルビーにはマイクロフレームワークもありますnancy

擬似シナトラを正常に実行するには、チュートリアルを最後から最後まで実行する必要があります。

+0

これは質問に答えません。 sinatraはどのようにwebrickを始めますか? – thesecretmaster

+0

コードを検査:) 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

私は見ましたが、それを理解できませんでしたので、私は尋ねました。 – thesecretmaster

1

シナトラはat_exitコールバックを定義することで、これは基本的に言うmain.rb

を見ないことに「Rubyスクリプトが実行して終了し、次にシナトラアプリを実行したときに!」

詳細については、ruby docs for at_exitを参照してください。

関連する問題