モジュール: Mongoid::Threaded

次による拡張機能。
スレッド
次のドキュメントに含まれます。
スレッド
定義:
lib/mongoid/threaded.rb
lib/mongoid/threaded/feature.rb

Overview

このモジュールには、現在のスレッドでライフサイクルがあるオブジェクトに簡単にアクセスするためのロジックが含まれています。

名前空間で定義済み

Modules: ライフサイクル

定数の概要の削減

STORAGE_KEY =

共有スレッドとフィルターでローカルストレージのキー。フィルター ローカルストレージのキーはシンボルでなければならないため、シンボルである必要があります。

:'[mongoid]'
STORAGE_OWNER_KEY =

ストレージハッシュを所有するフラグを追跡し、フラグが親ファイルからストレージを継承した(作成ではなく)いつを検出します。

:'[mongoid]:wner'
DATABASE_OVERRIDE_KEY =
'db-overwrite'
CLIENT_OVERRIDE_KEY =

クライアントを上書きするキー。

'クライアント オーバーライド'
CURRENT_SCOPE_KEY =

現在のスレッドの スコープスタックのキー。

'current-scope'
オートメーション_キー =
'自動保存'
VALIDATIONS_KEY =
'validation'
TOUSH_MEGED_KEY =
'access-merged'
STACK_KEY =
ハッシュ.新着情報 行う |ハッシュ, キー|
  ハッシュ[キー] = " #{key } - スタック "
end
SESSIONS_KEY =

現在のスレッドのセッションのキー。

'セッション'
変更された_DOCUMENTS_KEY =

トランザクション内で変更されたドキュメントを保存するためのキー。

'変更されたドキュメント'
EXECUTE_CALLBACKS =

ドキュメントに対してコールバックが実行されるかどうかのデフォルト値を保存するキー。

'コールバック実行'
BIND =
'bind'
ASsign =
'割り当て'
構築 =
'構築'
ロード =
'負荷'
CREATE =
'create'

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

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

#add_modified_document(session, document) ⇒ Object

セッションに関連付けられたトランザクション内で変更されたドキュメントへの参照を保存します。

パラメーター:

  • セッション Mongo::Session

    ドキュメントが変更された範囲内のセッション。

  • ドキュメント Mongoid::Document

    変更された Mongoid ドキュメント。



504
505
506
507
508
# ファイル 'lib/mongoid/threaded.rb', 行504

デフォルト add_modified_document(セッション, ドキュメント)
  return ただし、 セッション&.in_transaction?

  scheduled_documents[セッション] < ドキュメント
end

自動保存の数(ドキュメント)= true| false

ドキュメントは現在のスレッドで自動保存されていますか?

例:

ドキュメントは自動保存されていますか?

Threaded.autosaved?(doc)

パラメーター:

次の値を返します。

  • true | false

    ドキュメントが自動保存されている場合。



368
369
370
# ファイル 'lib/mongoid/threaded.rb', 行368

デフォルト 自動保存(ドキュメント)
  autoss_for(ドキュメント.クラス).include?(ドキュメント._id)
end

#autosavesHash

現在のスレッド上のすべてのオート保存を取得します。

例:

すべての自動保存を取得します。

Threaded.autosaves

次の値を返します。

  • ハッシュ

    現在の は自動保存されます。



403
404
405
# ファイル 'lib/mongoid/threaded.rb', 行403

デフォルト 自動保存
  得る(オートメーション_キー) { {} }
end

#autosaves_for(klass) ⇒ Array

クラスの現在のスレッドにおけるすべてのオート保存を取得します。

例:

すべての自動保存を取得します。

Threaded.autosaves_for(Person)

パラメーター:

  • klass クラス

    確認する クラス。

次の値を返します。

  • 配列

    現在の は自動保存されます。



425
426
427
# ファイル 'lib/mongoid/threaded.rb', 行425

デフォルト autoss_for(klass)
  自動保存[klass] ||= []
end

#begin_autosave(document) ⇒ Object

現在のスレッドでドキュメントの自動保存を開始します。

例:

Begin autosave.

Threaded.begin_autosave(doc)

パラメーター:



198
199
200
# ファイル 'lib/mongoid/threaded.rb', 行198

デフォルト begin_autosave(ドキュメント)
  autoss_for(ドキュメント.クラス).プッシュ(ドキュメント._id)
end

# start_execution (name) = true

名前付きスレッド ローカル スタックへのエントリを開始します。

例:

スタックへのエントリを開始します。

Threaded.begin_execution(:create)

パラメーター:

  • name ( string )

    スタックの名前

次の値を返します。

  • ( true )

    True。



130
131
132
# ファイル 'lib/mongoid/threaded.rb', 行130

デフォルト start_execution(name)
  stack(name).プッシュ(true)
end

# start_contact_merged (ドキュメント) = Object

ドキュメントのアクセスアップデートが現在のスレッドのアトミック挿入にマージされたことをマークします。

例:

参照マージを開始します。

Threaded.begin_touch_merged(doc)

パラメーター:

  • ドキュメント ドキュメント

    挿入される埋め込みドキュメント。



219
220
221
# ファイル 'lib/mongoid/threaded.rb', 行219

デフォルト start_contact_merged(ドキュメント)
  access_merged_for(ドキュメント.クラス).プッシュ(ドキュメント._id)
end

start_validate (ドキュメント)=オブジェクト

現在のスレッドでドキュメントの検証を開始します。

例:

Begin validation.

Threaded.begin_validate(doc)

パラメーター:



208
209
210
# ファイル 'lib/mongoid/threaded.rb', 行208

デフォルト start_validate(ドキュメント)
  validation_for(ドキュメント.クラス).プッシュ(ドキュメント._id)
end

# start_when_default_scope (klas)=オブジェクト

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

現在のスレッドで特定のモデルのデフォルト スコープの非表示を開始します。

例:

デフォルトのスコープ スタックなしで を開始します。

Threaded.begin_without_default_scope(klass)

パラメーター:

  • klass クラス

    デフォルトのスコープを抑制するモデル。



261
262
263
# ファイル 'lib/mongoid/threaded.rb', 行261

デフォルト start_Without_default_scope(klass)
  stack(: without_default_scope).プッシュ(klass)
end

# clear_modified_documents (セッション) ==========================================================================================

指定されたセッションの変更されたドキュメントのセットをクリアし、クリアされる前にセットの内容を返します。

パラメーター:

  • セッション Mongo::Session

    変更されたドキュメントセットをクリアするセッション。

次の値を返します。

  • Set< Mongoid::Document >

    クリアされる前に変更されたドキュメントのコレクション。



517
518
519
# ファイル 'lib/mongoid/threaded.rb', 行517

デフォルト clear_modified_documents(セッション)
  scheduled_documents.削除(セッション) || []
end

#clear_session(client: nil) ⇒ nil

注:

下位互換性のために、次のなしでこのメソッドを呼び出すことができます:

クライアントのこのスレッドのキャッシュされたセッションをクリアします。

client パラメータを指定する。

パラメーター:

  • クライアント Mongo::Client | nil (デフォルトはnil

    セッションをクリアするクライアント。

次の値を返します。

  • (nil)


494
495
496
# ファイル 'lib/mongoid/threaded.rb', 行494

デフォルト clear_session(クライアント: nil)
  セッション.削除(クライアント)&.end_session
end

# client_serveride = string | Symbol

グローバル クライアント オーバーライドを取得します。

例:

グローバル クライアント オーバーライドを取得します。

Threaded.client_override

次の値を返します。

  • ( string | Symbol )

    の上書き。



283
284
285
# ファイル 'lib/mongoid/threaded.rb', 行283

デフォルト client_ overwrite
  得る(CLIENT_OVERRIDE_KEY)
end

クライアント_オーバーライド= (名前) = string = (name) = string | Symbol

グローバル クライアント オーバーライドを設定します。

例:

グローバル クライアント オーバーライドを設定します。

Threaded.client_override = :testing

パラメーター:

  • name ( string | Symbol )

    グローバル オーバーライド名。

次の値を返します。

  • ( string | Symbol )

    の上書き。



295
296
297
# ファイル 'lib/mongoid/threaded.rb', 行295

デフォルト client_ overwrite=(name)
  セット(CLIENT_OVERRIDE_KEY, name)
end

#current_scopeklas = nil)===========================================================

現在の Mongoid スコープを取得します。

例:

スコープを取得します。

Threaded.current_scope(klass)
Threaded.current_scope

パラメーター:

  • klass (Klass) (デフォルトはnil

    スコープのクラス型。

次の値を返します。

  • 基準

    スコープ。



308
309
310
311
312
313
314
315
316
# ファイル 'lib/mongoid/threaded.rb', 行308

デフォルト current_scope(klass = nil)
  current_scope = 得る(CURRENT_SCOPE_KEY)

  場合 klass & & current_scope.respond_to?(:keys)
    current_scope[current_scope.キー.find { |k| k <= klass }]
  else
    current_scope
  end
end

# current_scope= (スコープ) =============================================================================

現在の Mongoid スコープを設定します。

例:

範囲 を設定します。

Threaded.current_scope = scope

パラメーター:

  • scope 基準

    現在のスコープ。

次の値を返します。

  • 基準

    スコープ。



326
327
328
# ファイル 'lib/mongoid/threaded.rb', 行326

デフォルト current_scope=(scope)
  セット(CURRENT_SCOPE_KEY, scope)
end

#database_overrideString | Symbol

グローバル データベースの上書きを取得します。

例:

グローバル データベースの上書きを取得します。

Threaded.database_override

次の値を返します。

  • ( string | Symbol )

    の上書き。



140
141
142
# ファイル 'lib/mongoid/threaded.rb', 行140

デフォルト database_override
  得る(DATABASE_OVERRIDE_KEY)
end

# database_overwrite= (name) = string | Symbol

グローバル データベース オーバーライドを設定します。

例:

グローバル データベース オーバーライドを設定します。

Threaded.database_override = :testing

パラメーター:

  • name ( string | Symbol )

    グローバル オーバーライド名。

次の値を返します。

  • ( string | Symbol )

    の上書き。



152
153
154
# ファイル 'lib/mongoid/threaded.rb', 行152

デフォルト database_override=(name)
  セット(DATABASE_OVERRIDE_KEY, name)
end

# delete(キー) = オブジェクト

という名前の変数をローカルストレージから削除します。

パラメーター:

  • キー ( string | Symbol )

    削除する変数の名前。



109
110
111
# ファイル 'lib/mongoid/threaded.rb', 行109

デフォルト 削除(キー)
  ストレージ.削除(キー)
end

#実行_コールバックs= (フラグ) =オブジェクト

現在のスレッドに対してドキュメント コールバックをデフォルトで呼び出すかどうかを示します。 個々のドキュメントはコールバックの動作をさらにオーバーライドする場合がありますが、これはデフォルトの動作に使用されます。

パラメーター:

  • flag true | false

    ドキュメント コールバックをデフォルトで実行するかどうか。



543
544
545
# ファイル 'lib/mongoid/threaded.rb', 行543

デフォルト execution_colbacks=(flag)
  セット(EXECUTE_CALLBACKS, flag)
end

実行_コールバックの回数は? = true | false

ドキュメント コールバックを現在のスレッドでデフォルトで実行するかどうかをクエリします。

特に指定されていない限り(#execute_colbacks=)、これは true を返します。

次の値を返します。

  • true | false

    ドキュメント コールバックをデフォルトで実行するかどうか。



529
530
531
532
533
534
535
# ファイル 'lib/mongoid/threaded.rb', 行529

デフォルト execution_colbacks?
  場合 は を(EXECUTE_CALLBACKS)
    得る(EXECUTE_CALLBACKS)
  else
    true
  end
end

実行する数は? (name) = true

名前付きスタックの実行の途中である

例:

スタック実行中かどうか

Threaded.executing?(:create)

パラメーター:

  • name シンボル

    スタックの名前

次の値を返します。

  • ( true )

    スタックが実行されている場合。



164
165
166
# ファイル 'lib/mongoid/threaded.rb', 行164

デフォルト 実行中(name)
  !stack(name).空の場合
end

終了_自動保存(ドキュメント) =オブジェクト

現在のスレッドでドキュメントの自動保存を終了します。

例:

自動保存を終了します。

Threaded.exit_autosave(doc)

パラメーター:



229
230
231
# ファイル 'lib/mongoid/threaded.rb', 行229

デフォルト exit_autosave(ドキュメント)
  autoss_for(ドキュメント.クラス).delete_one(ドキュメント._id)
end

# end_execution (name) = true

名前付きスレッド ローカル スタックから終了します。

例:

スタックから終了します。

Threaded.exit_execution(:create)

パラメーター:

  • name シンボル

    スタックの名前

次の値を返します。

  • ( true )

    True。



176
177
178
# ファイル 'lib/mongoid/threaded.rb', 行176

デフォルト end_execution(name)
  stack(name).ポップ
end

#終了_試行_merged(ドキュメント)= オブジェクト

現在のスレッド上のドキュメントの アクセスマージ フラグをクリアします。

例:

終了アクセスがマージされました。

Threaded.exit_touch_merged(doc)

パラメーター:



249
250
251
# ファイル 'lib/mongoid/threaded.rb', 行249

デフォルト end_contact_merged(ドキュメント)
  access_merged_for(ドキュメント.クラス).delete_one(ドキュメント._id)
end

end_validate (ドキュメント) =オブジェクト

現在のスレッド上のドキュメントの検証を終了します。

例:

検証を終了します。

Threaded.exit_validate(doc)

パラメーター:



239
240
241
# ファイル 'lib/mongoid/threaded.rb', 行239

デフォルト end_validate(ドキュメント)
  validation_for(ドキュメント.クラス).delete_one(ドキュメント._id)
end

# end_Without_default_scope (klas) = オブジェクト

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

現在のスレッドで特定のモデルのデフォルト スコープの非表示を終了します。

例:

デフォルトのスコープ スタックなしで を終了します。

Threaded.exit_without_default_scope(klass)

パラメーター:

  • klass クラス

    デフォルトのスコープ設定を解除するモデル。



273
274
275
# ファイル 'lib/mongoid/threaded.rb', 行273

デフォルト end_Without_default_scope(klass)
  stack(: without_default_scope).削除(klass)
end

# get (キー、デフォルト) = オブジェクト | nil

指定された名前のスレッドローカル変数またはフィルターローカル変数をクエリします。ブロックが指定され、 かつ 変数がまだ存在しない場合、ブロックの戻り値は、返す前に変数の値として設定されます。

アプリケーション「フィルター ローカル ストアにスレッド ローカル状態を配置すると、関連するコールバックが別の フィルターで実行されているときに状態が表示されなくなります。

影響を受けるコールバックは、埋め込まれた子に対する段階的なコールバックです。

パラメーター:

  • キー ( string | Symbol )

    クエリする変数の名前

  • default Proc

    この変数のデフォルト(初期)値を返す必要がある任意のブロック。

次の値を返します。

  • ( Object | nil )

    クエリされた変数の値、または設定されておらずデフォルトが指定されていない場合は nil 。



84
85
86
87
88
89
90
91
92
93
# ファイル 'lib/mongoid/threaded.rb', 行84

デフォルト 得る(キー, &default)
  結果 = ストレージ[キー]

  場合 結果.nil? & & default
    結果 = ノードの数
    セット(キー, 結果)
  end

  結果
end

#get_session(client: nil) ⇒ Mongo::Session | nil

注:

下位互換性のために、次のなしでこのメソッドを呼び出すことができます:

クライアントのこのスレッドのキャッシュされたセッションを取得します。

client パラメータを指定する。

パラメーター:

  • クライアント Mongo::Client | nil (デフォルトはnil

    セッションをキャッシュするクライアント。

次の値を返します。

  • Mongo ::Session | nil

    このスレッドまたは nil でキャッシュされたセッション。



482
483
484
# ファイル 'lib/mongoid/threaded.rb', 行482

デフォルト get_session(クライアント: nil)
  セッション[クライアント]
end

は がありますか? (キー) = true | false

ローカルストレージ内の名前付き変数の存在をクエリします。

パラメーター:

  • キー ( string | Symbol )

    クエリする変数の名前。

次の値を返します。

  • true | false

    指定された変数が存在するかどうか。



118
119
120
# ファイル 'lib/mongoid/threaded.rb', 行118

デフォルト は を(キー)
  ストレージ.key?(キー)
end

#modified_documents ==Hash=Mongo::Session, Set =Mongoid::Document=======================================================================

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

変更されたドキュメントのスレッド ストアを返します。

次の値を返します。



562
563
564
# ファイル 'lib/mongoid/threaded.rb', 行562

デフォルト scheduled_documents
  得る(変更された_DOCUMENTS_KEY) { ハッシュ.新着情報 { |h, k| h[k] = セット.新着情報 } }
end

# リセットです。 = オブジェクト

現在のスレッドまたはフィルターでローカルストレージを初期状態にリセットします。これは、新しいスレッドまたはファイバを開始するときに、状態がクリーンであることを確認するのに役立ちます。

Mongoid::Config.real_isolation_level の値は、現在のスレッドまたはファイバのストレージをリセットするかどうかを決定するために使用されます。



53
54
55
56
57
58
59
60
61
62
63
# ファイル 'lib/mongoid/threaded.rb', 行53

デフォルト reset!
  ケース Config.real_isolation_level
  次の場合: :thread
    スレッド.Current.thread_variable_set(STORAGE_KEY, nil)
  次の場合: :fiber
    ファイバ[STORAGE_KEY] = {}
    ファイバ[STORAGE_OWNER_KEY] = ファイバ.Current.object_id
  else
    発生 " 不明な分離レベル: #{ Config.real_isolation_level.explain}
  end
end

セッション=ハッシュ <Integer, Set>

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

セッションのスレッド ストアを返します。

次の値を返します。

  • ハッシュ「整数, セット」 )_

    クライアント オブジェクト ID によってインデックス付けされたセッション。



552
553
554
# ファイル 'lib/mongoid/threaded.rb', 行552

デフォルト セッション
  得る(SESSIONS_KEY) { {}.explain_by_ identity }
end

# set(キー、値)=オブジェクト

指定された名前を持つローカルストレージ内の変数を指定された値に設定します。このメソッドが必要な理由、および埋め込み子に対するカスケード コールバックで スレッド#[]= を回避する必要がある理由については、 #get を参照してください。

パラメーター:

  • キー ( string | Symbol )

    設定する変数の名前。

  • 価値 ( Object | nil )

    設定する変数の値(変数を設定解除する場合は nil



102
103
104
# ファイル 'lib/mongoid/threaded.rb', 行102

デフォルト セット(キー, 価値)
  ストレージ[キー] = 価値
end

# set_current_scope (scope、klas) =基準

現在の Mongoid スコープを設定します。 マルチモデルのスコープチェーンでも安全です。

例:

範囲 を設定します。

Threaded.current_scope(scope, klass)

パラメーター:

  • scope 基準

    現在のスコープ。

  • klass クラス

    現在のモデル クラス。

次の値を返します。

  • 基準

    スコープ。



339
340
341
342
343
344
345
346
# ファイル 'lib/mongoid/threaded.rb', 行339

デフォルト set_current_scope(scope, klass)
  場合 scope.nil?
    unset_current_scope(klass)
  else
    current_scope = 得る(CURRENT_SCOPE_KEY) { {} }
    current_scope[klass] = scope
  end
end

# set_session (セッション、クライアント: nil) =オブジェクト

注:

下位互換性のために、次のなしでこのメソッドを呼び出すことができます:

クライアント用のこのスレッドのセッションをキャッシュします。

client パラメータを指定する。

パラメーター:

  • セッション Mongo::Session

    保存するセッション。

  • クライアント Mongo::Client | nil (デフォルトはnil

    セッションをキャッシュするクライアント。



470
471
472
# ファイル 'lib/mongoid/threaded.rb', 行470

デフォルト set_session(セッション, クライアント: nil)
  セッション[クライアント] = セッション
end

#stack (名前)=配列

名前付きスタックを取得します。

例:

名前を使用してスタックを取得する

Threaded.stack(:create)

パラメーター:

  • name シンボル

    スタックの名前

次の値を返します。

  • 配列

    スタック。



188
189
190
# ファイル 'lib/mongoid/threaded.rb', 行188

デフォルト stack(name)
  得る(STACK_KEY[name]) { [] }
end

#contact_merged = ハッシュ

現在のスレッドですべてのアクセス マージされた追跡を取得します。

例:

すべてのアクセスマージを取得します。

Threaded.touch_merged

次の値を返します。

  • ハッシュ

    現在のアクセスマージされた追跡ハッシュ。



447
448
449
# ファイル 'lib/mongoid/threaded.rb', 行447

デフォルト access_merged
  得る(TOUSH_MEGED_KEY) { {} }
end

#contact_merged? (ドキュメント) = true | false

ドキュメントに、アクセスするアップデートがアトミック挿入にマージされたというフラグは付けられていますか?

例:

ドキュメントは手動でマージされていますか?

Threaded.touch_merged?(doc)

パラメーター:

次の値を返します。

  • true | false

    ドキュメントのアクセスがマージされた場合。



393
394
395
# ファイル 'lib/mongoid/threaded.rb', 行393

デフォルト access_merged?(ドキュメント)
  access_merged_for(ドキュメント.クラス).include?(ドキュメント._id)
end

connect_merged_for (klas) = 配列

クラスの現在のスレッド上のすべてのアクセス マージドキュメントID を取得します。

例:

すべてのアクセスマージを取得します。

Threaded.touch_merged_for(Sofa)

パラメーター:

  • klass クラス

    確認する クラス。

次の値を返します。

  • 配列

    現在のアクセスマージされたドキュメントID。



459
460
461
# ファイル 'lib/mongoid/threaded.rb', 行459

デフォルト access_merged_for(klass)
  access_merged[klass] ||= []
end

検証された回数(ドキュメント)= true| false

ドキュメントは現在のスレッドで検証されていますか?

例:

ドキュメントは検証されていますか?

Threaded.validated?(doc)

パラメーター:

次の値を返します。

  • true | false

    ドキュメントが検証されている場合。



380
381
382
# ファイル 'lib/mongoid/threaded.rb', 行380

デフォルト 検証されていますか?(ドキュメント)
  validation_for(ドキュメント.クラス).include?(ドキュメント._id)
end

#validationsHash

現在のスレッドのすべての検証を取得します。

例:

すべての検証を取得します。

Threaded.validations

次の値を返します。

  • ハッシュ

    現在の検証。



413
414
415
# ファイル 'lib/mongoid/threaded.rb', 行413

デフォルト validation
  得る(VALIDATIONS_KEY) { {} }
end

#validations_for(klass) ⇒ Array

クラスの現在のスレッドに関するすべての検証を取得します。

例:

すべての検証を取得します。

Threaded.validations_for(Person)

パラメーター:

  • klass クラス

    確認する クラス。

次の値を返します。

  • 配列

    現在の検証。



437
438
439
# ファイル 'lib/mongoid/threaded.rb', 行437

デフォルト validation_for(klass)
  validation[klass] ||= []
end

では、_default_scope は(klas) = ブール値

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

指定されたクラスのデフォルトのスコープは現在のスレッドで非表示になっていますか。

例:

指定されたクラスのデフォルトのスコープは非表示にされていますか?

Threaded.without_default_scope?(klass)

パラメーター:

  • klass クラス

    デフォルトのスコープ非表示を確認するモデル。

次の値を返します。



356
357
358
# ファイル 'lib/mongoid/threaded.rb', 行356

デフォルト without_default_scope は(klass)
  stack(: without_default_scope).include?(klass)
end