최상위 네임스페이스

네임스페이스 아래에 정의됨

모듈: ApplicationCable, ApplicationHelper, Blog, CommentsHelper, Mongoid, MongoidTest, MongoidTestConfig, MongoidTestInit, PostsHelper, Rails, RailsApi 클래스: Application Controller, ApplicationJob, Applicationmailer, ApplicationSystemTestCase, 코멘트 , Post 컨트롤러 코멘트 , Post 컨트롤러

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#check_if_transactions_might_be_available!(클라이언트) ⇒ 객체

이 메서드는 클라이언트 가 연결된 클러스터 가 어떤 경우에도 트랜잭션을 지원 하지 않는 경우 오류를 발생시킵니다. 현재 독립형 토폴로지 의 경우가 이에 해당합니다.

이 메서드를 실행하지 않았다고 해서 클러스터 에서 트랜잭션을 사용할 수 있다는 보장이 없다는 점에 유의하세요.

매개변수:

  • 고객 (Mongo::Client)

    테스트할 클러스터 에 연결된 클라이언트입니다.

다음을 발생시킵니다.



16
17
18
19
20
# 파일 'lib/mongoid/railties/console_sandbox.rb', 줄 16

def check_if_transactions_might_be_available!(고객)
  만약 고객.cluster.싱글?
    올리다 몽고이드::오류::TransactionsNotSupported
  end
end

#Standard_dependencies객체

Rubocop:todo all



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 파일 'gemfiles/standard.rb', 2줄

def Standard_dependencies
  gem 'rake'

  그룹 :development do
    gem '야드'

    플랫폼 :mri do
      # VSCode용 디버거.
      만약 !ENV['CI'] && !ENV['Docker'] && RUBY_VERSION < '3.0'
        gem 'debase'
        gem 'ruby-debug-ide'
      end
    end

    # 에버그린 구성 생성
    gem 'erubi'
    gem 'tilt'
    gem 'solargraph', 플랫폼: :mri
  end

  그룹 :development, :test do
    gem 'rspec', '~> 3.12'
    gem 'rubocop', '~> 1.45.1'
    gem 'Rubocop-performance', '~> 1.16.0'
    gem 'rubocop-rake', '~> 0.6.0'
    gem 'Rubocop-rspec', '~> 2.18.1'

    플랫폼 :mri do
      gem 'byebug'
    end

    플랫폼 :jruby do
      gem 'Ruby-debug'
    end
  end

  그룹 :test do
    gem 'activejob'
    gem 'timecop'
    gem 'rspec-retry'
    gem '벤치마크-ips'
    gem 'fuubar'
    gem 'rfc'
    gem '자식 프로세스'

    플랫폼 :mri do
      gem 'timeout-interrupt'
    end
  end

  만약 ENV['FLE'] == '헬퍼'
    gem 'libmongocrypt-helper', '~> 1.8.0'
  end
end

#start_sandboxObject

콘솔 샌드박스 모드 를 준비합니다. 이 메서드는 사용자가 '-sandbox' 플래그와 함께 Rails 콘솔을 시작할 때 호출해야 합니다.



36
37
38
39
40
41
# 파일 'lib/mongoid/railties/console_sandbox.rb', 줄 36

def start_sandbox
  몽고이드.persistence_context.고객. do |고객|
    check_if_transactions_might_be_available!(고객)
    start_sandbox_transaction(고객)
  end
end

#start_sandbox_transaction(클라이언트) ⇒ Object

샌드박스 콘솔 세션 내의 모든 작업을 포함해야 하는 트랜잭션 을 시작합니다. 이 트랜잭션 은 절대 커밋해서는 안 됩니다. 사용자가 콘솔 세션을 종료하면 클라이언트 연결이 끊기므로 트랜잭션 이 자동으로 중단됩니다.

매개변수:

  • 고객 (Mongo::Client)

    클라이언트가 트랜잭션 을 시작합니다.



28
29
30
31
32
# 파일 'lib/mongoid/railties/console_sandbox.rb', 줄 28

def start_sandbox_transaction(고객)
  Session = 고객.start_session
  ::몽고이드::스레드.set_session(Session, 클라이언트: 고객)
  Session.start_transaction
end