Sinatra/Rails:App Lifetimeの間にカスタムクラスインスタンスの持続
-
01-10-2019 - |
質問
Rails/Sinatraアプリは1回のみ初期化され、すべてのリクエストが同じアプリインスタンスを共有すると主張できますか?または、新しいリクエストが新しいアプリインスタンスを生成しますか?
セッション、データベースストレージ、サードパーティのサービスを使用せずに、カスタムクラスをインスタンスしてアプリの寿命の間にそれらを維持することは可能ですか?もしそうなら、スレッドの視点からの意味は何ですか?
Webベースのダウンロードマネージャーの実装方法を把握しようとしています。現在、Rubyベースのフレームワークを評価しています。
解決
Rails/Sinatraアプリは1回のみ初期化され、すべてのリクエストが同じアプリインスタンスを共有すると主張できますか?または、新しいリクエストが新しいアプリインスタンスを生成しますか?
一般的ではありません。これは本当にあなたのセットアップに依存します。同じアプリケーションオブジェクトを再利用するサーバー(別名ラックハンドラー)でプロセスを実行する場合、これは機能します。アプリケーションの同じインスタンスが使用されているかどうかは、使用しているWebフレームワークによって異なります。たとえば、シナトラはアプリケーションクラスの新しいインスタンスを作成します(通常 Sinatra::Application
)ラックエンドポイントとして使用される場合、すべての要求に対して。
セッション、データベースストレージ、サードパーティのサービスを使用せずに、カスタムクラスをインスタンスしてアプリの寿命の間にそれらを維持することは可能ですか?もしそうなら、スレッドの視点からの意味は何ですか?
本当にクラスを維持したい場合は、おそらくMaglevのようなものが必要になるでしょう。ただし、カスタムクラスのインスタンスを持続することを意味すると思います。永続性のためにデータベースを使用したくない場合(本当にすべきです)、Rubyが出荷されるPstoreに戻ることができます。