7

Rubyを使い始めたばかりで、Sinatraで遊んでいますが、リクエスト間でデータベース接続を共有する方法が見つかりませんでした。

私はJavaWeb開発から来ました。あなたがしなければならない基本的なことの一つは、データベース接続をプールすることです。そのため、Rubyにも同様の何かが存在すると確信していますが、それを見つけることができません。

ActiveRecordとDataMapperはこの機能を提供しますが、ORMは必要なく、通常のSQLクエリを作成したいだけです。

Sinatraには特定のアプローチがありますか、それともすべてのRackベースのアプリケーションに一般的な方法がありますか?

4

1 に答える 1

5

接続を維持するには、インスタンス変数(Sinatraアプリケーションはとにかく単なるオブジェクトです)またはグローバル変数を作成するだけです。または、接続を管理するクラス。私が見たほとんどのRubyデータベースライブラリは、データベースアダプタまたは単なるクライアントです。

@db = Mysql2::Client.new #...

またはグローバル変数:

$db = Mysql2::Client.new #...

接続プーリングは、アプリケーションの存続期間中、複数のスレッド/ファイバー間で少数の接続を共有するための単なる方法です。私の知る限り、Java、JVMは、プロセス間で接続を共有していません。

ただし、 Ruby用の汎用接続プールライブラリがあります。

于 2012-08-16T18:35:22.403 に答える