モジュール: Mongoid::Threaded

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

Overview

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

名前空間で定義済み

Modules: ライフサイクル

定数の概要の削減

DATABASE_OVERRIDE_KEY =
'[mongoid]:db-overwrite'
CLIENTS_KEY =

クライアントを保存するキーの定数。

'[mongoid]:clients'
CLIENT_OVERRIDE_KEY =

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

'[mongoid]:client-overwrite'
CURRENT_SCOPE_KEY =

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

'[mongoid]:current-scope'
オートメーション_キー =
'[mongoid]: autosaves'
VALIDATIONS_KEY =
'[mongoid]:validation'
STACK_KEY =
ハッシュ.新着情報 行う |ハッシュ, キー|
  ハッシュ[キー] = " [mongoid]: #{ key } -stack "
end
SESSIONS_KEY =

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

'[mongoid]:sessions'
変更された_DOCUMENTS_KEY =

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

'[mongoid]:modified-documents'
EXECUTE_CALLBACKS =

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

'[mongoid]:execute-colbacks'
BIND =
'bind'.freeze
ASsign =
割り当てます.freeze
構築 =
'ビルド'.freeze
ロード =
'load'.freeze
CREATE =
' create '.freeze

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

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

#add_modified_document(session, document) ⇒ Object

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

パラメーター:

  • セッション Mongo::Session

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

  • ドキュメント Mongoid::Document

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



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

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

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

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

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

例:

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

Threaded.autosaved?(doc)

パラメーター:

次の値を返します。

  • true | false

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



264
265
266
# ファイル 'lib/mongoid/threaded.rb', 行264

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

#autosavesHash

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

例:

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

Threaded.autosaves

次の値を返します。

  • ハッシュ

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



286
287
288
# ファイル 'lib/mongoid/threaded.rb', 行286

デフォルト 自動保存
  スレッド.Current[オートメーション_キー] ||= {}
end

#autosaves_for(klass) ⇒ Array

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

例:

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

Threaded.autosaves_for(Person)

パラメーター:

  • klass クラス

    確認する クラス。

次の値を返します。

  • 配列

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



308
309
310
# ファイル 'lib/mongoid/threaded.rb', 行308

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

#begin_autosave(document) ⇒ Object

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

例:

Begin autosave.

Threaded.begin_autosave(doc)

パラメーター:



115
116
117
# ファイル 'lib/mongoid/threaded.rb', 行115

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

# start_execution (name) = true

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

例:

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

Threaded.begin_execution(:create)

パラメーター:

  • name ( string )

    スタックの名前

次の値を返します。

  • ( true )

    True。



47
48
49
# ファイル 'lib/mongoid/threaded.rb', 行47

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

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

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

例:

Begin validation.

Threaded.begin_validate(doc)

パラメーター:



125
126
127
# ファイル 'lib/mongoid/threaded.rb', 行125

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

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

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

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

例:

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

Threaded.begin_without_default_scope(klass)

パラメーター:

  • klass クラス

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



157
158
159
# ファイル 'lib/mongoid/threaded.rb', 行157

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

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

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

パラメーター:

  • セッション Mongo::Session

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

次の値を返します。

  • Set< Mongoid::Document >

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



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

デフォルト clear_modified_documents(セッション)
  scheduled_documents[セッション].dup
保証する
  scheduled_documents[セッション].クリア
end

#clear_session(client: nil) ⇒ nil

注:

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

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

'client` パラメーターを指定します。

パラメーター:

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

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

次の値を返します。

  • (nil)


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

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

# client_serveride = string | Symbol

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

例:

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

Threaded.client_override

次の値を返します。

  • ( string | Symbol )

    の上書き。



179
180
181
# ファイル 'lib/mongoid/threaded.rb', 行179

デフォルト client_ overwrite
  スレッド.Current[CLIENT_OVERRIDE_KEY]
end

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

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

例:

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

Threaded.client_override = :testing

パラメーター:

  • name ( string | Symbol )

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

次の値を返します。

  • ( string | Symbol )

    の上書き。



191
192
193
# ファイル 'lib/mongoid/threaded.rb', 行191

デフォルト client_ overwrite=(name)
  スレッド.Current[CLIENT_OVERRIDE_KEY] = name
end

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

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

例:

スコープを取得します。

Threaded.current_scope(klass)
Threaded.current_scope

パラメーター:

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

    スコープのクラス型。

次の値を返します。

  • 基準

    スコープ。



204
205
206
207
208
209
210
211
212
# ファイル 'lib/mongoid/threaded.rb', 行204

デフォルト current_scope(klass = nil)
  場合 klass & & スレッド.Current[CURRENT_SCOPE_KEY].respond_to?(:keys)
    スレッド.Current[CURRENT_SCOPE_KEY][
        スレッド.Current[CURRENT_SCOPE_KEY].キー.find { |k| k <= klass }
    ]
  else
    スレッド.Current[CURRENT_SCOPE_KEY]
  end
end

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

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

例:

範囲 を設定します。

Threaded.current_scope = scope

パラメーター:

  • scope 基準

    現在のスコープ。

次の値を返します。

  • 基準

    スコープ。



222
223
224
# ファイル 'lib/mongoid/threaded.rb', 行222

デフォルト current_scope=(scope)
  スレッド.Current[CURRENT_SCOPE_KEY] = scope
end

#database_overrideString | Symbol

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

例:

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

Threaded.database_override

次の値を返します。

  • ( string | Symbol )

    の上書き。



57
58
59
# ファイル 'lib/mongoid/threaded.rb', 行57

デフォルト database_override
  スレッド.Current[DATABASE_OVERRIDE_KEY]
end

# database_overwrite= (name) = string | Symbol

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

例:

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

Threaded.database_override = :testing

パラメーター:

  • name ( string | Symbol )

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

次の値を返します。

  • ( string | Symbol )

    の上書き。



69
70
71
# ファイル 'lib/mongoid/threaded.rb', 行69

デフォルト database_override=(name)
  スレッド.Current[DATABASE_OVERRIDE_KEY] = name
end

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

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

パラメーター:

  • flag true | false

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



406
407
408
# ファイル 'lib/mongoid/threaded.rb', 行406

デフォルト execution_colbacks=(flag)
  スレッド.Current[EXECUTE_CALLBACKS] = flag
end

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

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

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

次の値を返します。

  • true | false

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



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

デフォルト execution_colbacks?
  場合 スレッド.Current.key?(EXECUTE_CALLBACKS)
    スレッド.Current[EXECUTE_CALLBACKS]
  else
    true
  end
end

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

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

例:

スタック実行中かどうか

Threaded.executing?(:create)

パラメーター:

  • name シンボル

    スタックの名前

次の値を返します。

  • ( true )

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



81
82
83
# ファイル 'lib/mongoid/threaded.rb', 行81

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

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

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

例:

自動保存を終了します。

Threaded.exit_autosave(doc)

パラメーター:



135
136
137
# ファイル 'lib/mongoid/threaded.rb', 行135

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

# end_execution (name) = true

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

例:

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

Threaded.exit_execution(:create)

パラメーター:

  • name シンボル

    スタックの名前

次の値を返します。

  • ( true )

    True。



93
94
95
# ファイル 'lib/mongoid/threaded.rb', 行93

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

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

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

例:

検証を終了します。

Threaded.exit_validate(doc)

パラメーター:



145
146
147
# ファイル 'lib/mongoid/threaded.rb', 行145

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

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

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

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

例:

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

Threaded.exit_without_default_scope(klass)

パラメーター:

  • klass クラス

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



169
170
171
# ファイル 'lib/mongoid/threaded.rb', 行169

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

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

注:

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

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

'client` パラメーターを指定します。

パラメーター:

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

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

次の値を返します。

  • Mongo ::Session | nil

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



343
344
345
# ファイル 'lib/mongoid/threaded.rb', 行343

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

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

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

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

次の値を返します。



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

デフォルト scheduled_documents
  スレッド.Current[変更された_DOCUMENTS_KEY] ||= ハッシュ.新着情報 行う |h, k|
    h[k] = セット.新着情報
  end
end

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

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

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

次の値を返します。

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

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



415
416
417
# ファイル 'lib/mongoid/threaded.rb', 行415

デフォルト セッション
  スレッド.Current[SESSIONS_KEY] ||= {}.explain_by_ identity
end

# set_current_scope (scope、klas) =基準

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

例:

範囲 を設定します。

Threaded.current_scope(scope, klass)

パラメーター:

  • scope 基準

    現在のスコープ。

  • klass クラス

    現在のモデル クラス。

次の値を返します。

  • 基準

    スコープ。



235
236
237
238
239
240
241
242
# ファイル 'lib/mongoid/threaded.rb', 行235

デフォルト set_current_scope(scope, klass)
  場合 scope.nil?
    unset_current_scope(klass)
  else
    スレッド.Current[CURRENT_SCOPE_KEY] ||= {}
    スレッド.Current[CURRENT_SCOPE_KEY][klass] = scope
  end
end

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

注:

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

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

'client` パラメーターを指定します。

パラメーター:

  • セッション Mongo::Session

    保存するセッション。

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

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



331
332
333
# ファイル 'lib/mongoid/threaded.rb', 行331

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

#stack (名前)=配列

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

例:

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

Threaded.stack(:create)

パラメーター:

  • name シンボル

    スタックの名前

次の値を返します。

  • 配列

    スタック。



105
106
107
# ファイル 'lib/mongoid/threaded.rb', 行105

デフォルト stack(name)
  スレッド.Current[STACK_KEY[name]] ||= []
end

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

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

例:

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

Threaded.validated?(doc)

パラメーター:

次の値を返します。

  • true | false

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



276
277
278
# ファイル 'lib/mongoid/threaded.rb', 行276

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

#validationsHash

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

例:

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

Threaded.validations

次の値を返します。

  • ハッシュ

    現在の検証。



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

デフォルト validation
  スレッド.Current[VALIDATIONS_KEY] ||= {}
end

#validations_for(klass) ⇒ Array

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

例:

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

Threaded.validations_for(Person)

パラメーター:

  • klass クラス

    確認する クラス。

次の値を返します。

  • 配列

    現在の検証。



320
321
322
# ファイル 'lib/mongoid/threaded.rb', 行320

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

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

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

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

例:

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

Threaded.without_default_scope?(klass)

パラメーター:

  • klass クラス

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

次の値を返します。



252
253
254
# ファイル 'lib/mongoid/threaded.rb', 行252

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