2

Rails 2 アプリケーションで、スレッドを使用して (並列ジェムを使用して) 多数のタスクを並行して実行するスクリプトを作成しました。私が遭遇しているのは、Rails (または ActiveSupport?) が依存関係をロードする方法による初期化されていない定数の問題です。

私のオンライン調査によると、config.threadsafe!この問題に対処するには、おそらくまたはそのような性質のものを使用する必要があることがわかりました。ただし、ここでの問題は、スレッドの使用が実際にはこの 1 つのスクリプトに限定されているため、(environment.rb を変更することによって) アプリケーション全体の動作方法を変更したくないということです。

Threadこれまでに行ったことは、新しいオブジェクトを作成する前に、必要な数の定数を単純に初期化することです。

constants_to_load = [
  User,
  Merchant,
  Loggable,
  UserMailer,
  # etc.
]

# code involving threads

これは明らかに良いアプローチではありません.ロードする必要のある定数の私自身の推測リストに完全に基づいており(主に、例外が発生したときに定数を事後的に追加することから)、将来の保証には程遠いものです。「私が必要とする可能性のあるすべてのものをロードしてください」のようなことを言うことは可能ですか? それはおそらく悪いことだと思います。それは私にとって最も確実なアプローチのように思えます。しかし、これを正しく行う別の方法があれば、私はすべて耳を傾けます.

4

0 に答える 0