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