모듈: Mongoid::Clients::Sessions::ClassMethods
- 포함 항목:
- 몽고이드
- 다음에 정의됨:
- lib/mongoid/clients/sessions.rb
상수 요약 접기
- CALLBACK_ACTIONS =
이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
트랜잭션 콜백을 trigger 하는 데 사용할 수 있는 작업입니다.
%i[create 파괴 update]
인스턴스 메서드 요약 접기
-
#after_commit(*args, &block) ⇒ 객체
트랜잭션 커밋 후 콜백 이 호출되도록 설정합니다.
-
#after_create_commit(*args, &block) ⇒ 객체
after_commit :hook, on: :create의 바로 가기입니다. -
#after_destroy_commit(*args, &block) ⇒ 객체
after_commit :hook, on: :destroy의 바로 가기입니다. -
#after_rollback(*args, &block) ⇒ 객체
이 콜백 은 생성, 업데이트 또는 삭제가 롤백된 후에 호출됩니다.
-
#after_save_commit(*args, &block) ⇒ 객체
after_commit :hook, on: [ :create, :update ]의 바로 가기입니다. -
#after_update_commit(*args, &block) ⇒ 객체
after_commit :hook, on: :update의 바로 가기입니다. -
#트랜잭션(options = {}, session_options: {}) { ... } ⇒ 객체
트랜잭션 컨텍스트 내에서 차단 을 실행합니다.
-
#with_session(options = {}) {|The| ... } ⇒ 객체
세션 컨텍스트 내에서 차단 을 실행합니다.
인스턴스 메서드 세부 정보
#after_commit(*args, &block) ⇒ 객체
트랜잭션 커밋 후 콜백 이 호출되도록 설정합니다. 콜백 은 트랜잭션 에서 문서 가 생성, 업데이트 또는 파기된 경우에만 호출됩니다.
메서드 매개변수 및 사용 가능한 옵션에 대한 자세한 내용은 ActiveSupport::Callbacks::ClassMethods::set_callback 를 참조하세요.
108 109 110 111 |
# 파일 'lib/mongoid/clients/sessions.rb', 줄 108 def after_commit(*args, &차단) (args) set_callback(: 커밋, :after, *args, &차단) end |
#after_create_commit(*args, &block) ⇒ 객체
after_commit :hook, on: :create의 바로 가기입니다.
120 121 122 123 |
# 파일 'lib/mongoid/clients/sessions.rb', 줄 120 def after_create_commit(*args, &차단) (args, on: :create) set_callback(: 커밋, :after, *args, &차단) end |
#after_destroy_commit(*args, &block) ⇒ 객체
after_commit :hook, on: :destroy의 바로 가기입니다.
132 133 134 135 |
# 파일 'lib/mongoid/clients/sessions.rb', 줄 132 def after_destory_commit(*args, &차단) (args, on: :destory) set_callback(: 커밋, :after, *args, &차단) end |
#after_rollback(*args, &block) ⇒ 객체
이 콜백 은 생성, 업데이트 또는 삭제가 롤백된 후에 호출됩니다.
옵션은 after_commit 문서를 확인하세요.
140 141 142 143 |
# 파일 'lib/mongoid/clients/sessions.rb', 줄 140 def after_rollback(*args, &차단) (args) set_callback(:rollback, :after, *args, &차단) end |
#after_save_commit(*args, &block) ⇒ 객체
바로 가기 after_commit :hook, on: [ :create, :update ]
114 115 116 117 |
# 파일 'lib/mongoid/clients/sessions.rb', 줄 114 def after_save_commit(*args, &차단) (args, on: %i[create update]) set_callback(: 커밋, :after, *args, &차단) end |
#after_update_commit(*args, &block) ⇒ 객체
after_commit :hook, on: :update의 바로 가기입니다.
126 127 128 129 |
# 파일 'lib/mongoid/clients/sessions.rb', 줄 126 def after_update_commit(*args, &차단) (args, on: :update) set_callback(: 커밋, :after, *args, &차단) end |
#트랜잭션(options = {}, session_options: {}) { ... } ⇒ 객체
트랜잭션 컨텍스트 내에서 차단 을 실행합니다.
차단 오류가 발생하지 않으면 트랜잭션 이 커밋됩니다. 오류가 발생하면 트랜잭션 이 중단됩니다. Mongoid::Errors::Rollback를 제외하고 오류가 전달됩니다. 이 오류는 전달되지 않으므로 의도적으로 트랜잭션 롤백 하려는 경우 발생할 수 있습니다.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# 파일 'lib/mongoid/clients/sessions.rb', 줄 83 def 트랜잭션( = {}, session_options: {}, &차단) with_session() do |Session| Session.with_transaction(, &차단).탭 { run_commit_callbacks(Session) } 구출 *transaction_not_supported_Exceptions 올리다 몽고이드::오류::TransactionsNotSupported 구출 몽고이드::오류::Rollback run_abort_callbacks(Session) 구출 몽고이드::오류::InvalidSessionNesting # 세션은 여기서 종료되어야 합니다. 올리다 몽고이드::오류::InvalidTransactionNesting.신규 구출 mongo::오류::세션이 유효하지 않습니다., mongo::오류::InvalidTransactionOperation => e run_abort_callbacks(Session) 올리다 몽고이드::오류::TransactionError.신규(e) 구출 StandardError => e run_abort_callbacks(Session) 올리다 e end end |
#with_session(options = {}) {|The| ... } ⇒ 객체
세션 컨텍스트 내에서 차단 을 실행합니다.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# 파일 'lib/mongoid/clients/sessions.rb', 줄 38 def with_session( = {}) 올리다 몽고이드::오류::InvalidSessionNesting.신규 만약 스레드.get_session(클라이언트: persistence_context.고객) Session = persistence_context.고객.start_session() 스레드.set_session(Session, 클라이언트: persistence_context.고객) yield(Session) 구출 mongo::오류::세션이 유효하지 않습니다. => e 올리다 몽고이드::오류::SessionsNotSupported.신규 만약 e.is_a?(mongo::오류::SessionsNotSupported) 올리다 e 구출 mongo::오류::OperationFailure => e 만약 (e.코드 == 40_415 && e. =~ /startTransaction/) || (e.코드 == 20 && e. =~ /트랜잭션/) 올리다 몽고이드::오류::TransactionsNotSupported.신규 other 올리다 e end 구출 *transaction_not_supported_Exceptions 올리다 몽고이드::오류::TransactionsNotSupported 보장 스레드.clear_modified_documents(Session) 스레드.clear_session(클라이언트: persistence_context.고객) end |