たとえば、次のルートを使用して、リクエストからSinatraアプリを終了できるようにしたい:
post '/terminate' do
Thread.current.kill
end
このように実装するのは少し唐突です。リクエストが完了し、HTTP OK メッセージが返された後、Sinatra が正常にシャットダウンした方がよいでしょう。
これを行うためのフックはありますか?
編集:
私のアプリケーションは、Webhook 通知の受信に使用される軽量のモック サーバーです。このような複数のサーバーを同じマシン (異なるポート) で使用するため、開始/停止のグローバルな方法を避ける必要があります。
私の要件は、各サーバーが独自の Ruby インスタンスで実行する必要があるという事実によって推進されているため、REST インターフェースを介する以外にテストとサーバー間の通信はありません。
デフォルトのthin
サーバーを使用して Sinatra を実行しています。これまでのところ、私のコードは Sinatra::Base のサブクラスにすぎず、run!
コード内から使用を開始しました。これは素晴らしくシンプルです。各サーバーをインスタンス化するためのスタンドアロン スクリプトを作成できます。必要なのは、サーバーを停止する方法だけです。