2

Rails アプリと別の druby プロセスがあります。このプロセスにより、いくつかのメソッドが提供されます。各 druby のメソッドの最初の行には、ActiveRecord::Base.establish_connection への呼び出しがあります。ここで、db_name は、Rails アプリケーションによって設定されたパラメーターに依存します。プロセスが間違ったデータベース名を取得する場合があり、同時実行の問題である可能性があると思います。それは可能性が?スレッドセーフにする方法について何か考えはありますか?

助けてくれてありがとう!ロベルト

4

1 に答える 1

0

はい、これは並行性の問題です。

それを修正するには、アーキテクチャを少し変更する必要がありますが、十分な情報がありません。

  • バックエンドで実行されているコードは、Rails アプリケーションで実行されているものと同じですか?
  • 異なるデータベースが同じモデルを使用していますか?
  • データベースはいくつありますか? この数は増えますか?

基本的に、少数の一定数のデータベースがある場合、最も簡単なのは別の ruby​​ プロセスを使用することです。

異なるモデルの異なるデータベースがある場合は、異なる基本クラスを使用することを想定できます。

AppA < ActiveRecord::Base
Model1 < AppA
Model2 < AppA

AppB < ActiveRecord::Base
Model3 < AppB

その後、あなたは呼び出すことができます

AppA.establish_connection(...)
AppB.establish_connection(...)

異なるデータベースに。

于 2009-05-15T10:46:49.493 に答える