クラス: Mongoid::Contextual::Mongo::DocumentsLoader Private

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
次のことが含まれます。
関連付け::EagerLoadable
定義:
lib/mongoid/contextual/mongo/documents_loader.rb

Overview

このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。

指定された条件のドキュメントをロードします。

インスタンス属性の概要を折りたたむ

クラスメソッドの概要を折りたたむ

インスタンス メソッドの概要を折りたたむ

関連::EagerLoadableに含まれるメソッド

#create_pipeline#eager_load#eager_load_with_lookup#eager_loadable?#preload#preload_for_lookup#switch_local_and_foreign_fields?

コンストラクターの詳細

#初期化(view、klas、条件、実行プログラム:セルフ.クラス.executor) ドキュメントローダー

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

ドキュメント ローダー インスタンスをインスタンス化し、提供されたエグゼキュータを使用してその実行を直ちにスケジュールします。

パラメーター:

  • 表示 Mongo::Collection::View

    データベースからレコードを取得するための コレクション ビュー。

  • klass クラス

    ドキュメントをインスタンス化するための Mongoid モデル クラス。 データベースから取得されたすべてのレコードは、可能な場合、このクラスのインスタンスに変換されます。

  • 条件 Mongoid ::criteria

    ロードするドキュメントを指定する基準。

  • 実行プログラム 同時実行::抽象ExecutorService (デフォルトはsecurity.Class.executor

    Concurrent::Promises::Future インスタンスを実行中できる実行プログラム。



88
89
90
91
92
93
94
95
96
97
# ファイル 'lib/mongoid/contextual/mongo/documents_loader.rb' 行88

デフォルト 初期化(表示, klass, 条件, 実行プログラム: 自己.クラス.実行プログラム)
  @view = 表示
  @klass = klass
  @criteria = 条件
  @mutex = ミューテックス.新着情報
  @ State = :pending
  @feature = 同時実行::Promise.future_on(実行プログラム) 行う
    始める & & 実行する
  end
end

インスタンス属性の詳細

#criteriaMongoid::Criteria

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

ロードするdocumentを指定する基準を返します。ここで公開されているのは、Association::EagerLoadableeager_loadable? メソッドでこれが利用可能であることが想定されているためです。

次の値を返します。

  • Mongoid ::criteria

    ロードするdocumentを指定する基準。ここで公開されているのは、Association::EagerLoadableeager_loadable? メソッドでこれが利用可能であることが想定されているためです。



74
75
76
# ファイル 'lib/mongoid/contextual/mongo/documents_loader.rb' 行74

デフォルト 条件
  @criteria
end

クラスメソッドの詳細

実行プログラム(name = Mongoid.async_query_executor) 詳しくは、 同時実行::ImmediateExecutor |同時実行::ThreadPoolExecutor

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

Mongoid 構成オプション に従って適切な実行プログラムを返します。

パラメーター:

  • name string | Symbol (デフォルトはMongoid.async_query_executor

    クエリ エグゼキュータ名は、 :immediat または : global_thread_role のいずれかになります。デフォルトは async_query_executor 構成オプションです。

次の値を返します。

  • 同時実行::ImmediateExecutor | 同時実行::ThreadPoolExecutor

    ドキュメント ロード タスクを実行するために使用されるエグゼキュータ。

次の値が発生します。



60
61
62
63
64
65
66
67
68
69
# ファイル 'lib/mongoid/contextual/mongo/documents_loader.rb' 行60

デフォルト 自己.実行プログラム(name = Mongoid.async_query_executor)
  ケース name.to_sym
  次の場合: : 直接
    minimum_executor
  次の場合: : global_thread_Pool
    global_thread_Pool_async_query_executor
  else
    発生 Errors::InvalidQueryExecutor.新着情報(name)
  end
end

global_thread_Pool_async_query_executor =同時実行::ThreadPoolExecutor

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

async_query_executor 構成オプション が : global_thread_Pool に設定されている場合に使用する非同期実行プログラムを返します。 この実行プログラムは、スレッド プールを使用してバックグラウンド スレッドで操作を実行します。

次の値を返します。

  • 同時実行::ThreadPoolExecutor

    ドキュメント ロード タスクを実行するために使用されるエグゼキュータ。



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# ファイル 'lib/mongoid/contextual/mongo/documents_loader.rb' 行31

デフォルト 自己.global_thread_Pool_async_query_executor
  create_Pool = proc 行う |同時実行性|
    同時実行::ThreadPoolExecutor.新着情報(
      min_threads: 0,
      max_threads: 同時実行性,
      max_queue: 同時実行性 * 4,
      フォールバック_ポリシー: :caler_runs
    )
  end
  同時実行性 = Mongoid.global_executor_concurrency || 4
  @@ global_thread_Pool_async_query_executor ||= create_Pool.を呼び出す(同時実行性)
  場合 @@ global_thread_Pool_async_query_executor.max_Length != 同時実行性
    old_Pool = @@ global_thread_Pool_async_query_executor
    @@ global_thread_Pool_async_query_executor = create_Pool.を呼び出す(同時実行性)
    old_Pool.shutdown
  end
  @@ global_thread_Pool_async_query_executor
end

maximum_executor =同時実行::ImmediateExecutor

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

async_query_executor 構成オプションが :immediat に設定されている場合に使用する同期実行プログラムを返します。 この実行プログラムは、必要に応じてブロックしながら、現在のスレッド上のすべての操作を実行します。

次の値を返します。

  • 同時実行::ImmediateExecutor

    ドキュメント ロード タスクを実行するために使用されるエグゼキュータ。



21
22
23
# ファイル 'lib/mongoid/contextual/mongo/documents_loader.rb' 行21

デフォルト 自己.minimum_executor
  @@immediate_executor ||= 同時実行::ImmediateExecutor.新着情報
end

インスタンス メソッドの詳細

#実行= 配列< Mongoid ::Document >

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

データベースから @criteria によって指定されたレコードを読み込み、@klass タイプの Mongoid document に変換します。

このメソッドは、ローダーの インスタンスを作成するときにスケジュールされたタスク(場合によっては非同期)によって呼び出されます。 ただし、呼び出し元スレッドへのロードをすぐに実行する必要がある場合は、このメソッドを直接呼び出すことができます。

このメソッドを呼び出しても、ローダーの状態は変更されません。

次の値を返します。

  • 配列未満Mongoid >

    データベースからロードされたドキュメントの配列。



151
152
153
154
155
156
157
# ファイル 'lib/mongoid/contextual/mongo/documents_loader.rb' 行151

デフォルト 実行する
  ドキュメント = @view.map 行う |doc|
    工場.from_db(@klass, doc, @criteria)
  end
  Bearer_load(ドキュメント) 場合 concern_loadable?
  ドキュメント
end

保留中 = true | false

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

ローダーが保留状態かどうかを false または true を返します。

保留状態とは、ローダーの実行がスケジュールされているが、まだ開始されていないことを意味します。

次の値を返します。

  • true | false

    ローダーが保留状態にある場合は true 、それ以外の場合は false です。



106
107
108
109
110
# ファイル 'lib/mongoid/contextual/mongo/documents_loader.rb' 行106

デフォルト 保留中?
  @mutex.同期 行う
    @ State == :pending
  end
end

番号 の開始 = true | false

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

ローダーが起動状態かどうかを false または true を返します。

開始状態とは、ローダーの実行が開始されたことを意味します。 の実行が完了した後(成功または失敗)、ローダーはこの状態のままであることに注意してください。

次の値を返します。

  • true | false

    ローダーが起動状態にある場合は true 、それ以外の場合は false です。



120
121
122
123
124
# ファイル 'lib/mongoid/contextual/mongo/documents_loader.rb' 行120

デフォルト は、開始されましたか?
  @mutex.同期 行う
    @ State == :started
  end
end

#非スケジュール=オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

ローダーを未スケジュールとしてマークします。

ローダーが非スケジュールとマークされている場合は実行されません。documentを読み込む唯一の方法は、execute メソッドを直接呼び出すことです。

タスクの実行がすでに開始されている場合は、スケジュールを解除しても効果はありません。



133
134
135
136
137
# ファイル 'lib/mongoid/contextual/mongo/documents_loader.rb' 行133

デフォルト 非スケジュール
  @mutex.同期 行う
    @ State = :Canceled ただし、 @ State == :started
  end
end