모듈: Mongoid::Threaded
개요
이 모듈에는 현재 스레드에 라이프사이클이 있는 객체에 쉽게 액세스할 수 있는 로직이 포함되어 있습니다.
네임스페이스 아래에 정의됨
모듈: 라이프사이클
상수 요약 접기
- DATABASE_OVERRIDE_KEY =
'[mongoid]:db-override'
- CLIENTS_KEY =
클라이언트를 저장하는 키에 대한 상수입니다.
'[mongoid]:clients'
- CLIENT_OVERRIDE_KEY =
클라이언트를 재정의하는 키입니다.
'[mongoid]:client-override'
- CURRENT_SCOPE_KEY =
현재 스레드의 범위 스택 에 대한 키입니다.
'[mongoid]:current-scope'
- AUTOSAVES_KEY =
'[mongoid]:자동 저장'
- VALIDATIONS_KEY =
'[mongoid]:유효성 검사'
- STACK_KEYS =
해시.신규 do |해시, 키| 해시[키] = "[mongoid]:#{key}- 스택" end
- SESSIONS_KEY =
현재 스레드의 세션에 대한 키입니다.
'[mongoid]:세션'
- 수정_DOCUMENTS_KEY =
트랜잭션 내부에서 수정된 문서를 저장하기 위한 키입니다.
'[mongoid]:modified-documents'
- EXECUTE_CALLBACKS =
문서에서 콜백을 실행할지 여부에 대한 기본값 을 저장하는 키입니다.
'[mongoid]:execute-callbacks'
- BIND =
'bind'.동결
- ASSIGN =
'할당'.동결
- BUILD =
'빌드'.동결
- LOAD =
'load'.동결
- CREATE =
'생성'.동결
인스턴스 메서드 요약 접기
-
#add_modified_document(session, document) ⇒ Object
세션과 연결된 트랜잭션 내에서 수정된 문서 에 대한 참조를 저장합니다.
-
#자동 저장?(문서) ⇒ true | false
문서 가 현재 스레드에 자동 저장되나요?
-
#autosaves ⇒ Hash
현재 스레드에서 모든 자동 저장을 가져옵니다.
-
#autosaves_for(klass) ⇒ Array
클래스의 현재 스레드에서 모든 자동 저장을 가져옵니다.
-
#begin_autosave(document) ⇒ Object
현재 스레드에서 문서 자동 저장을 시작합니다.
-
#begin_execution(name) ⇒ true
명명된 스레드 로컬 스택에 진입하기 시작합니다.
-
#begin_validate(문서) ⇒ 객체
현재 스레드에서 문서의 유효성 검사를 시작합니다.
-
#begin_without_default_scope(klass) ⇒ 객체
비공개
현재 스레드에서 지정된 모델에 대한 기본값 범위를 억제하기 시작합니다.
-
#clear_modified_documents(session) ⇒ Set<Mongoid::Document>
지정된 세션에 대해 수정된 문서 설정하다 를 지우고 정리 전 설정하다 의 내용을 반환합니다.
-
#clear_session(client: nil) ⇒ nil
클라이언트 의 이 스레드에 대해 캐시된 세션을 지웁니다.
-
#client_override ⇒ string | 기호
글로벌 클라이언트 재정의를 가져옵니다.
-
#client_override=(name) ⇒ string | 기호
글로벌 클라이언트 재정의를 설정합니다.
-
#current_scope(klass = nil) ⇒ 기준
현재 Mongoid 범위를 가져옵니다.
-
#current_scope=(scope) ⇒ 기준
현재 Mongoid 범위를 설정합니다.
-
#database_override ⇒ string | 기호
글로벌 데이터베이스 재정의를 가져옵니다.
-
#database_override=(name) ⇒ string | 기호
글로벌 데이터베이스 재정의를 설정합니다.
-
#execution_callbacks=(플래그) ⇒ 객체
현재 스레드에 대해 기본값 문서 콜백을 호출할지 여부를 나타냅니다.
-
#execution_callbacks? ⇒ true | false
현재 스레드에 대해 기본값 문서 콜백을 실행해야 하는지 여부를 쿼리합니다.
-
#실행 중이세요?(name) ⇒ true
명명된 스택 을 실행하는 중입니다.
-
#exit_autosave(문서) ⇒ 객체
현재 스레드에서 문서 자동 저장을 종료합니다.
-
#exit_execution(name) ⇒ true
명명된 스레드 로컬 스택에서 종료합니다.
-
#exit_validate(문서) ⇒ 객체
현재 스레드에서 문서 유효성 검사를 종료합니다.
-
#exit_without_default_scope(klass) ⇒ 객체
비공개
현재 스레드에서 지정된 모델에 대한 기본값 범위를 표시하지 않도록 종료합니다.
-
#get_session(client: nil) ⇒ Mongo::Session | nil
클라이언트 의 이 스레드에 대해 캐시된 세션을 가져옵니다.
-
#Modifyed_documents ⇒ Hash<Mongo::Session, Set<Mongoid::Document>>
비공개
수정된 문서의 스레드 저장 를 반환합니다.
-
#sessions ⇒ Hash<Integer, Set>
비공개
세션의 스레드 저장 를 반환합니다.
-
#set_current_scope(scope, klass) ⇒ 기준
현재 Mongoid 범위를 설정합니다.
-
#set_session(session, 클라이언트: nil) ⇒ 객체
클라이언트 에 대해 이 스레드에 대한 세션을 캐시합니다.
-
#스택(이름) ⇒ 배열
명명된 스택 을 가져옵니다.
-
#검증되었나요?(문서) ⇒ true | false
문서 가 현재 스레드에서 검증되었나요?
-
#validations ⇒ Hash
현재 스레드에 대한 모든 유효성 검사를 가져옵니다.
-
#validations_for(klass) ⇒ Array
클래스의 현재 스레드에 대한 모든 유효성 검사를 가져옵니다.
-
#without_default_scope?(klass) ⇒ 부울
비공개
지정된 클래스의 기본 범위가 현재 스레드에서 표시되지 않나요?
인스턴스 메서드 세부 정보
#add_modified_document(session, document) ⇒ Object
세션과 연결된 트랜잭션 내에서 수정된 문서 에 대한 참조를 저장합니다.
365 366 367 368 369 |
# 파일 'lib/mongoid/threaded.rb', 365줄 def add_modified_document(Session, 문서) 반환 하지 않는 한 Session&.in_transaction? Modifyed_documents[Session] << 문서 end |
#자동 저장?(문서) ⇒ true | false
문서 가 현재 스레드에 자동 저장되나요?
264 265 266 |
# 파일 'lib/mongoid/threaded.rb', 264줄 def 자동 저장?(문서) autosave_for(문서.클래스).포함?(문서._id) end |
#autosave ⇒ 해시
현재 스레드에서 모든 자동 저장을 가져옵니다.
286 287 288 |
# 파일 'lib/mongoid/threaded.rb', 286줄 def 자동 저장 스레드.Current[AUTOSAVES_KEY] ||= {} end |
#autosaves_for(klass) ⇒ Array
클래스의 현재 스레드에서 모든 자동 저장을 가져옵니다.
308 309 310 |
# 파일 'lib/mongoid/threaded.rb', 308줄 def autosave_for(class) 자동 저장[class] ||= [] end |
#begin_autosave(document) ⇒ Object
현재 스레드에서 문서 자동 저장을 시작합니다.
115 116 117 |
# 파일 'lib/mongoid/threaded.rb', 115줄 def begin_autosave(문서) autosave_for(문서.클래스).push(문서._id) end |
#begin_execution(name) ⇒ true
명명된 스레드 로컬 스택에 진입하기 시작합니다.
47 48 49 |
# 파일 'lib/mongoid/threaded.rb', 47줄 def begin_execution(이름) 스택(이름).push(true) end |
#begin_validate(문서) ⇒ 객체
현재 스레드에서 문서의 유효성 검사를 시작합니다.
125 126 127 |
# 파일 'lib/mongoid/threaded.rb', 125줄 def start_validate(문서) validations_for(문서.클래스).push(문서._id) end |
#begin_without_default_scope(klass) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
현재 스레드에서 지정된 모델에 대한 기본값 범위를 억제하기 시작합니다.
157 158 159 |
# 파일 'lib/mongoid/threaded.rb', 157줄 def begin_without_default_scope(class) 스택(:without_default_scope).push(class) end |
#clear_modified_documents(session) ⇒ Set<Mongoid::Document>
지정된 세션에 대해 수정된 문서 설정하다 를 지우고 정리 전 설정하다 의 내용을 반환합니다.
378 379 380 381 382 |
# 파일 'lib/mongoid/threaded.rb', 378줄 def clear_modified_documents(Session) Modifyed_documents[Session].dup 보장 Modifyed_documents[Session].지우기 end |
#clear_session(client: nil) ⇒ nil
이전 버전과의 호환성을 위해 다음 없이 이 메서드를 호출할 수 있습니다.
클라이언트 의 이 스레드에 대해 캐시된 세션을 지웁니다.
' 클라이언트` 매개변수를 지정합니다.
355 356 357 |
# 파일 'lib/mongoid/threaded.rb', 355줄 def clear_session(클라이언트: nil) 세션.삭제(고객)&.end_session end |
#client_override ⇒ string | 기호
글로벌 클라이언트 재정의를 가져옵니다.
179 180 181 |
# 파일 'lib/mongoid/threaded.rb', 179줄 def client_override 스레드.Current[CLIENT_OVERRIDE_KEY] end |
#client_override=(name) ⇒ string | 기호
글로벌 클라이언트 재정의를 설정합니다.
191 192 193 |
# 파일 'lib/mongoid/threaded.rb', 191줄 def client_override=(이름) 스레드.Current[CLIENT_OVERRIDE_KEY] = 이름 end |
#current_scope(klass = nil) ⇒ 기준
현재 Mongoid 범위를 가져옵니다.
204 205 206 207 208 209 210 211 212 |
# 파일 'lib/mongoid/threaded.rb', 204줄 def current_scope(class = nil) 만약 class && 스레드.Current[CURRENT_SCOPE_KEY].response_to?(:keys) 스레드.Current[CURRENT_SCOPE_KEY][ 스레드.Current[CURRENT_SCOPE_KEY].키.찾기 { |k| k <= class } ] other 스레드.Current[CURRENT_SCOPE_KEY] end end |
#current_scope=(scope) ⇒ 기준
현재 Mongoid 범위를 설정합니다.
222 223 224 |
# 파일 'lib/mongoid/threaded.rb', 222줄 def current_scope=(범위) 스레드.Current[CURRENT_SCOPE_KEY] = 범위 end |
#database_override ⇒ string | 기호
글로벌 데이터베이스 재정의를 가져옵니다.
57 58 59 |
# 파일 'lib/mongoid/threaded.rb', 57줄 def database_override 스레드.Current[DATABASE_OVERRIDE_KEY] end |
#database_override=(name) ⇒ string | 기호
글로벌 데이터베이스 재정의를 설정합니다.
69 70 71 |
# 파일 'lib/mongoid/threaded.rb', 69줄 def database_override=(이름) 스레드.Current[DATABASE_OVERRIDE_KEY] = 이름 end |
#execution_callbacks=(플래그) ⇒ 객체
현재 스레드에 대해 기본적으로 문서 콜백을 호출할지 여부를 나타냅니다. 개별 문서가 콜백 동작을 추가로 재정의할 수 있지만 이는 기본 동작에 사용됩니다.
406 407 408 |
# 파일 'lib/mongoid/threaded.rb', 406줄 def execution_callbacks=(flag) 스레드.Current[EXECATE_CALLBACKS] = flag end |
#execution_callbacks? ⇒ true | false
현재 스레드에 대해 기본값 문서 콜백을 실행해야 하는지 여부를 쿼리합니다.
달리 표시되지 않는 한(#execute_callbacks=로) 이는 true를 반환합니다.
392 393 394 395 396 397 398 |
# 파일 'lib/mongoid/threaded.rb', 392줄 def 실행 콜백? 만약 스레드.Current.키?(EXECATE_CALLBACKS) 스레드.Current[EXECATE_CALLBACKS] other true end end |
#실행 중이세요?(name) ⇒ true
명명된 스택을 실행하는 중입니다.
81 82 83 |
# 파일 'lib/mongoid/threaded.rb', 81줄 def 실행 중이세요?(이름) !스택(이름).비어 있나요? end |
#exit_autosave(문서) ⇒ 객체
현재 스레드에서 문서 자동 저장을 종료합니다.
135 136 137 |
# 파일 'lib/mongoid/threaded.rb', 135줄 def exit_autosave(문서) autosave_for(문서.클래스).delete_one(문서._id) end |
#exit_execution(name) ⇒ true
명명된 스레드 로컬 스택에서 종료합니다.
93 94 95 |
# 파일 'lib/mongoid/threaded.rb', 93줄 def exit_execution(이름) 스택(이름).팝 end |
#exit_validate(문서) ⇒ 객체
현재 스레드에서 문서 유효성 검사를 종료합니다.
145 146 147 |
# 파일 'lib/mongoid/threaded.rb', 145줄 def exit_validate(문서) validations_for(문서.클래스).delete_one(문서._id) end |
#exit_without_default_scope(klass) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
현재 스레드에서 지정된 모델에 대한 기본값 범위를 표시하지 않도록 종료합니다.
169 170 171 |
# 파일 'lib/mongoid/threaded.rb', 169줄 def exit_without_default_scope(class) 스택(:without_default_scope).삭제(class) end |
#get_session(client: nil) ⇒ Mongo::Session | nil
이전 버전과의 호환성을 위해 다음 없이 이 메서드를 호출할 수 있습니다.
클라이언트 의 이 스레드에 대해 캐시된 세션을 가져옵니다.
' 클라이언트` 매개변수를 지정합니다.
343 344 345 |
# 파일 'lib/mongoid/threaded.rb', 343줄 def get_session(클라이언트: nil) 세션[고객] end |
#modified_documents ⇒ Hash<Mongo::Session, Set<Mongoid::Document>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
수정된 문서의 스레드 저장 를 반환합니다.
425 426 427 428 429 |
# 파일 'lib/mongoid/threaded.rb', 425줄 def Modifyed_documents 스레드.Current[수정_DOCUMENTS_KEY] ||= 해시.신규 do |h, k| h[k] = 세트.신규 end end |
#sessions ⇒ Hash<Integer, Set>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
세션의 스레드 저장 를 반환합니다.
415 416 417 |
# 파일 'lib/mongoid/threaded.rb', 415줄 def 세션 스레드.Current[SESSIONS_KEY] ||= {}.compare_by_identity end |
#set_current_scope(scope, klass) ⇒ 기준
현재 Mongoid 범위를 설정합니다. 다중 모델 범위 체인에 안전합니다.
235 236 237 238 239 240 241 242 |
# 파일 'lib/mongoid/threaded.rb', 235줄 def set_current_scope(범위, class) 만약 범위.nil? unset_current_scope(class) other 스레드.Current[CURRENT_SCOPE_KEY] ||= {} 스레드.Current[CURRENT_SCOPE_KEY][class] = 범위 end end |
#set_session(session, 클라이언트: nil) ⇒ 객체
이전 버전과의 호환성을 위해 다음 없이 이 메서드를 호출할 수 있습니다.
클라이언트 에 대해 이 스레드에 대한 세션을 캐시합니다.
' 클라이언트` 매개변수를 지정합니다.
331 332 333 |
# 파일 'lib/mongoid/threaded.rb', 331줄 def set_session(Session, 클라이언트: nil) 세션[고객] = Session end |
#스택(이름) ⇒ 배열
명명된 스택 을 가져옵니다.
105 106 107 |
# 파일 'lib/mongoid/threaded.rb', 105줄 def 스택(이름) 스레드.Current[STACK_KEYS[이름]] ||= [] end |
#검증되었나요?(문서) ⇒ true | false
문서 가 현재 스레드에서 검증되었나요?
276 277 278 |
# 파일 'lib/mongoid/threaded.rb', 276줄 def 검증되었나요?(문서) validations_for(문서.클래스).포함?(문서._id) end |
#validations ⇒ 해시
현재 스레드에 대한 모든 유효성 검사를 가져옵니다.
296 297 298 |
# 파일 'lib/mongoid/threaded.rb', 296줄 def 유효성 검사 스레드.Current[VALIDATIONS_KEY] ||= {} end |
#validations_for(klass) ⇒ Array
클래스의 현재 스레드에 대한 모든 유효성 검사를 가져옵니다.
320 321 322 |
# 파일 'lib/mongoid/threaded.rb', 320줄 def validations_for(class) 유효성 검사[class] ||= [] end |
#without_default_scope?(klass) ⇒ 부울
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
지정된 클래스의 기본 범위가 현재 스레드에서 표시되지 않나요?
252 253 254 |
# 파일 'lib/mongoid/threaded.rb', 252줄 def without_default_scope?(class) 스택(:without_default_scope).포함?(class) end |